modWinMain.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """Главное окно приложения"""
  2. from typing import Any, Dict
  3. from tkinter import Tk, LabelFrame
  4. from pakApp.pakGui.pakWinMain.pakFrmCmd.modFrmCmd import FrmCmd
  5. from pakApp.pakGui.pakWinMain.pakFrmBot.modFrmBot import FrmBot
  6. class WinMain(Tk):
  7. """Главное окно приложения"""
  8. def __init__(self, gui: Any) -> None:
  9. Tk.__init__(self)
  10. self.app: Any = gui.app
  11. self.gui: Any = gui
  12. self.title("БотоФерма WarTank")
  13. self.geometry("800x640")
  14. self.list_bot: list[str] = []
  15. self.list_frm_bot: dict[str, FrmBot] = {}
  16. self.frm_cmd = FrmCmd(self)
  17. self.frm_list_bot = LabelFrame(self, text="Список ботов")
  18. self.frm_list_bot.pack(fill="both", expand=1)
  19. def run(self) -> None:
  20. """Запускает графику (главное окно) в работу"""
  21. self.mainloop()
  22. def update_list_bot(self) -> None:
  23. """Обновляет список ботоов с сервера"""
  24. print("WinMain.update_list_bot()")
  25. list_bot: list[Dict[str, str]] = self.app.logic.get_list_bot()
  26. print(f"WinMain.update_list_bot(): list_bot={list_bot}")
  27. for dict_bot in list_bot:
  28. name = dict_bot["name"]
  29. if name not in self.list_bot:
  30. stat_bot = FrmBot(self.app, self.frm_list_bot, name)
  31. self.list_frm_bot[name] = stat_bot
  32. self.list_bot.append(name)
  33. stat_bot = self.list_frm_bot[name]
  34. stat_bot.update_state(dict_bot)
  35. self.after(5000, self.update_list_bot)