modWinState.py 7.7 KB

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