admin_program.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import abc
  2. import tkinter as tk
  3. from tool.type_ import *
  4. from tool.tk import make_font, set_button_disable_from_list
  5. import admin
  6. import admin_event as tk_event
  7. class AdminProgram(metaclass=abc.ABCMeta):
  8. def __init__(self, station: admin.AdminStation, win: Union[tk.Frame, tk.Toplevel, tk.Tk], color: str):
  9. self.station = station
  10. self.win = win
  11. self.color = color
  12. @abc.abstractmethod
  13. def set_disable(self):
  14. ...
  15. @abc.abstractmethod
  16. def reset_disable(self):
  17. ...
  18. @abc.abstractmethod
  19. def conf_gui(self, n: int = 1):
  20. ...
  21. @abc.abstractmethod
  22. def get_program_frame(self) -> tk.Frame:
  23. ...
  24. class WelcomeProgram(AdminProgram):
  25. def __init__(self, station, win, color):
  26. super(WelcomeProgram, self).__init__(station, win, color)
  27. self.frame = tk.Frame(self.win)
  28. self.frame['bg'] = color
  29. self.title = tk.Label(self.frame)
  30. self.btn: List[tk.Button] = [tk.Button(self.frame) for _ in range(2)]
  31. self.__conf_font()
  32. def __conf_font(self, n: int = 1):
  33. self.title_font_size = int(25 * n)
  34. self.btn_font_size = int(14 * n)
  35. def conf_gui(self, n: int = 1):
  36. self.__conf_font(n)
  37. title_font = make_font(size=self.title_font_size, weight="bold")
  38. btn_font = make_font(size=self.btn_font_size)
  39. for btn, text in zip(self.btn, ["TestMSG", "TestProgress"]):
  40. btn['font'] = btn_font
  41. btn['text'] = text
  42. btn['bg'] = '#d3d7d4'
  43. self.title['text'] = 'Welcome to HGSSystem Manager'
  44. self.title['font'] = title_font
  45. self.title['bg'] = self.color
  46. self.btn[0]['command'] = lambda: self.test_msg()
  47. self.btn[1]['command'] = lambda: self.test_progress()
  48. self.title.place(relx=0.1, rely=0.3, relwidth=0.8, relheight=0.2)
  49. self.btn[0].place(relx=0.2, rely=0.7, relwidth=0.2, relheight=0.1)
  50. self.btn[1].place(relx=0.6, rely=0.7, relwidth=0.2, relheight=0.1)
  51. def test_progress(self):
  52. event = tk_event.TestProgressEvent(self.station)
  53. self.station.push_event(event)
  54. def test_msg(self):
  55. self.station.show_msg("Test Msg", "test msg")
  56. def get_program_frame(self) -> Tuple[str, tk.Frame]:
  57. return "Welcome", self.frame
  58. def set_disable(self):
  59. set_button_disable_from_list(self.btn)
  60. def reset_disable(self):
  61. set_button_disable_from_list(self.btn, flat='normal')