modWinState.py 7.8 KB

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