modWinState.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. """Окно показывает статистику бота"""
  2. from typing import Any
  3. from tkinter import Toplevel, LabelFrame, Label, Frame, Button
  4. from pakApp.pakGui.pakWinState.pakFrmShahta.modFrmShahta import FrmShahta
  5. class WinState(Toplevel):
  6. """Окно состояния бота"""
  7. def __init__(self, win_main: Any, name_bot: str) -> None:
  8. Toplevel.__init__(self, master=win_main)
  9. self.title("Статистика бота: "+name_bot)
  10. self.geometry("800x600")
  11. self.win_main = win_main
  12. self.name = name_bot
  13. if True: # Кнопки команд
  14. self.frm_cmd = Frame(self, border=3, relief="sunken")
  15. self.frm_cmd.pack(side="bottom", fill="x")
  16. self.btn_close = Button(self.frm_cmd,
  17. text="Закрыть",
  18. command=self.close)
  19. self.btn_close.pack(side="right")
  20. if True: # Ресурсы танка
  21. self.frm_resource = LabelFrame(self,
  22. text="Ресурсы",
  23. border=3,
  24. relief="sunken")
  25. self.frm_resource.pack(side="top", fill="x")
  26. self.lbl_auto = Label(self.frm_resource,
  27. text="Автоигра: false",
  28. border=3,
  29. relief="ridge",
  30. anchor="w")
  31. self.lbl_auto.pack(side="top", fill="x")
  32. self.lbl_is_work = Label(self.frm_resource,
  33. text="В работе: false",
  34. border=3,
  35. relief="ridge",
  36. anchor="w")
  37. self.lbl_is_work.pack(side="top", fill="x")
  38. self.lbl_toplivo = Label(self.frm_resource,
  39. text="Топливо: 0",
  40. border=3,
  41. relief="ridge",
  42. anchor="w")
  43. self.lbl_toplivo.pack(side="top", fill="x")
  44. self.lbl_slava = Label(self.frm_resource,
  45. text="Слава: 0",
  46. border=3,
  47. relief="ridge",
  48. anchor="w")
  49. self.lbl_slava.pack(side="top", fill="x")
  50. self.lbl_serebro = Label(self.frm_resource,
  51. text="Серебро: 0",
  52. border=3,
  53. relief="ridge",
  54. anchor="w")
  55. self.lbl_serebro.pack(side="top", fill="x")
  56. self.lbl_zoloto = Label(self.frm_resource,
  57. text="Золото: 0",
  58. border=3,
  59. relief="ridge",
  60. anchor="w")
  61. self.lbl_zoloto.pack(side="top", fill="x")
  62. self.lbl_level = Label(self.frm_resource,
  63. text="Уровень: 0",
  64. border=3,
  65. relief="ridge",
  66. anchor="w")
  67. self.lbl_level.pack(side="top", fill="x")
  68. self.lbl_progress = Label(self.frm_resource,
  69. text="Прогресс: 0",
  70. border=3,
  71. relief="ridge",
  72. anchor="w")
  73. self.lbl_progress.pack(side="top", fill="x")
  74. if True: # Статистика танка
  75. self.frm_tank = LabelFrame(self,
  76. text="Танк",
  77. border=3,
  78. relief="sunken")
  79. self.frm_tank.pack(side="top", fill="x")
  80. self.frm_tank_stat = LabelFrame(self.frm_tank,
  81. text="Параметры",
  82. border=3,
  83. relief="sunken")
  84. self.frm_tank_stat.pack(side="left")
  85. self.lbl_ataka = Label(self.frm_tank_stat,
  86. text="Атака: 0",
  87. border=3,
  88. relief="ridge",
  89. anchor="w")
  90. self.lbl_ataka.pack(side="top", fill="x")
  91. self.lbl_brona = Label(self.frm_tank_stat,
  92. text="Броня: 0",
  93. border=3,
  94. relief="ridge",
  95. anchor="w")
  96. self.lbl_brona.pack(side="top", fill="x")
  97. self.lbl_tochnost = Label(self.frm_tank_stat,
  98. text="Точность: 0",
  99. border=3,
  100. relief="ridge",
  101. anchor="w")
  102. self.lbl_tochnost.pack(side="top", fill="x")
  103. self.lbl_prochnost = Label(self.frm_tank_stat,
  104. text="Прочность: 0",
  105. border=3,
  106. relief="ridge",
  107. anchor="w")
  108. self.lbl_prochnost.pack(side="top", fill="x")
  109. self.lbl_mosh = Label(self.frm_tank_stat,
  110. text="Танковая мощь: 0",
  111. border=3,
  112. relief="ridge",
  113. anchor="w")
  114. self.lbl_mosh.pack(side="top", fill="x")
  115. self.frm_basa = LabelFrame(self,
  116. text="База",
  117. border=3,
  118. relief="sunken")
  119. self.frm_basa.pack(side="top", fill="x")
  120. self.frm_shahta = FrmShahta(self.frm_basa)
  121. self.auto_update()
  122. def auto_update(self):
  123. """Само-обновление окна"""
  124. self.after(5000, self.auto_update)
  125. app = self.win_main.app
  126. res = app.logic.get_stat_bot(self.name)
  127. self.lbl_auto["text"] = "АвтоИгра: " + res["isAuto"]
  128. self.lbl_is_work["text"] = "В работе: " + res["isWork"]
  129. self.lbl_toplivo["text"] = "Топливо: " + res["топливо"]
  130. self.lbl_slava["text"] = "Слава: " + res["слава"]
  131. self.lbl_serebro["text"] = "Серебро: " + res["серебро"]
  132. self.lbl_zoloto["text"] = "Золото: " + res["золото"]
  133. self.lbl_level["text"] = "Уровень: " + res["уровень"]
  134. self.lbl_progress["text"] = "Прогресс: " + res["прогресс"]
  135. self.lbl_ataka["text"] = "Атака: " + res["атака"]
  136. self.lbl_brona["text"] = "Броня: " + res["броня"]
  137. self.lbl_tochnost["text"] = "Точность: " + res["точность"]
  138. self.lbl_prochnost["text"] = "Прочность: " + res["прочность"]
  139. self.lbl_mosh["text"] = "Танковая мощь: " + res["мощь"]
  140. self.frm_shahta.upstat(res)
  141. def close(self):
  142. """Закрывает окно по требованию"""
  143. self.destroy()