admin_program.py 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. import abc
  2. import tkinter as tk
  3. from tool.type_ import *
  4. from tool.tk import make_font, set_tk_disable_from_list
  5. import conf
  6. import admin
  7. import admin_event as tk_event
  8. class AdminProgram(metaclass=abc.ABCMeta):
  9. def __init__(self, station: admin.AdminStation, win: Union[tk.Frame, tk.Toplevel, tk.Tk], color: str, title: str):
  10. self.station = station
  11. self.win = win
  12. self.color = color
  13. self.frame = tk.Frame(self.win)
  14. self.frame['bg'] = color
  15. self.program_title = title
  16. @abc.abstractmethod
  17. def set_disable(self):
  18. ...
  19. @abc.abstractmethod
  20. def reset_disable(self):
  21. ...
  22. @abc.abstractmethod
  23. def conf_gui(self, n: int = 1):
  24. ...
  25. def get_program_frame(self) -> Tuple[str, tk.Frame]:
  26. return self.program_title, self.frame
  27. class WelcomeProgram(AdminProgram):
  28. def __init__(self, station, win, color):
  29. super().__init__(station, win, color, "Welcome")
  30. self.title = tk.Label(self.frame)
  31. self.btn: List[tk.Button] = [tk.Button(self.frame) for _ in range(2)]
  32. self.__conf_font()
  33. def __conf_font(self, n: int = 1):
  34. self.title_font_size = int(25 * n)
  35. self.btn_font_size = int(14 * n)
  36. def conf_gui(self, n: int = 1):
  37. self.__conf_font(n)
  38. title_font = make_font(size=self.title_font_size, weight="bold")
  39. btn_font = make_font(size=self.btn_font_size)
  40. for btn, text in zip(self.btn, ["TestMSG", "TestProgress"]):
  41. btn['font'] = btn_font
  42. btn['text'] = text
  43. btn['bg'] = '#d3d7d4'
  44. self.title['text'] = 'Welcome to HGSSystem Manager'
  45. self.title['font'] = title_font
  46. self.title['bg'] = self.color
  47. self.btn[0]['command'] = lambda: self.test_msg()
  48. self.btn[1]['command'] = lambda: self.test_progress()
  49. self.title.place(relx=0.1, rely=0.3, relwidth=0.8, relheight=0.2)
  50. self.btn[0].place(relx=0.2, rely=0.7, relwidth=0.2, relheight=0.1)
  51. self.btn[1].place(relx=0.6, rely=0.7, relwidth=0.2, relheight=0.1)
  52. def test_progress(self):
  53. event = tk_event.TestProgressEvent(self.station)
  54. self.station.push_event(event)
  55. def test_msg(self):
  56. self.station.show_msg("Test Msg", "test msg")
  57. def set_disable(self):
  58. set_tk_disable_from_list(self.btn)
  59. def reset_disable(self):
  60. set_tk_disable_from_list(self.btn, flat='normal')
  61. class CreatUserProgramBase(AdminProgram):
  62. def __init__(self, station, win, color, title: str):
  63. super().__init__(station, win, color, title)
  64. self.enter_frame = tk.Frame(self.frame)
  65. self.title: List[tk.Label] = [tk.Label(self.enter_frame) for _ in range(3)]
  66. self.enter: List[tk.Entry] = [tk.Entry(self.enter_frame) for _ in range(3)]
  67. self.var: List[tk.Variable] = [tk.StringVar() for _ in range(3)]
  68. self.btn: List[tk.Button] = [tk.Button(self.frame) for _ in range(2)] # creat(生成用户) try(计算uid)
  69. self._conf("#FA8072") # 默认颜色
  70. self.__conf_font()
  71. def _conf(self, bg_color):
  72. self.bg_color = bg_color
  73. return self
  74. def __conf_font(self, n: int = 1):
  75. self.title_font_size = int(16 * n)
  76. self.btn_font_size = int(14 * n)
  77. def conf_gui(self, n: int = 1):
  78. self.__conf_font(n)
  79. title_font = make_font(size=self.title_font_size)
  80. btn_font = make_font(size=self.btn_font_size)
  81. self.enter_frame['bg'] = self.bg_color
  82. self.enter_frame['bd'] = 5
  83. self.enter_frame['relief'] = "ridge"
  84. self.enter_frame.place(relx=0.2, rely=0.3, relwidth=0.6, relheight=0.30)
  85. height = 0.1
  86. for lb, text, enter, var in zip(self.title, ["UserName:", "PassWord:", "Phone:"], self.enter, self.var):
  87. lb['font'] = title_font
  88. lb['text'] = text
  89. lb['bg'] = self.bg_color
  90. lb['anchor'] = 'e'
  91. enter['font'] = title_font
  92. enter['textvariable'] = var
  93. lb.place(relx=0.01, rely=height, relwidth=0.30, relheight=0.17)
  94. enter.place(relx=0.35, rely=height, relwidth=0.60, relheight=0.17)
  95. height += 0.30
  96. for btn, text, x in zip(self.btn, ["Creat", "GetUID"], [0.2, 0.6]):
  97. btn['font'] = btn_font
  98. btn['text'] = text
  99. btn['bg'] = conf.tk_btn_bg
  100. btn.place(relx=x, rely=0.7, relwidth=0.2, relheight=0.08)
  101. def set_disable(self):
  102. set_tk_disable_from_list(self.btn)
  103. set_tk_disable_from_list(self.enter)
  104. def reset_disable(self):
  105. set_tk_disable_from_list(self.btn, flat='normal')
  106. set_tk_disable_from_list(self.enter, flat='normal')
  107. class CreatNormalUserProgram(CreatUserProgramBase):
  108. def __init__(self, station, win, color):
  109. super(CreatNormalUserProgram, self).__init__(station, win, color, "CreatNormalUser")
  110. class CreatManagerUserProgram(CreatUserProgramBase):
  111. def __init__(self, station, win, color):
  112. super(CreatManagerUserProgram, self).__init__(station, win, color, "CreatManagerUser")
  113. self._conf("#4b5cc4")
  114. class CreatAutoNormalUserProgram(AdminProgram):
  115. def __init__(self, station, win, color):
  116. super().__init__(station, win, color, "CreatAutoNormalUser")
  117. self.enter_frame = tk.Frame(self.frame)
  118. self.title: tk.Label = tk.Label(self.enter_frame)
  119. self.enter: tk.Entry = tk.Entry(self.enter_frame)
  120. self.var: tk.Variable = tk.StringVar()
  121. self.btn: tk.Button = tk.Button(self.frame) # creat(生成用户) try(计算uid)
  122. self.__conf_font()
  123. def __conf_font(self, n: int = 1):
  124. self.title_font_size = int(16 * n)
  125. self.btn_font_size = int(14 * n)
  126. def conf_gui(self, n: int = 1):
  127. self.__conf_font(n)
  128. title_font = make_font(size=self.title_font_size)
  129. btn_font = make_font(size=self.btn_font_size)
  130. self.enter_frame['bg'] = "#bce672"
  131. self.enter_frame['bd'] = 5
  132. self.enter_frame['relief'] = "ridge"
  133. self.enter_frame.place(relx=0.2, rely=0.3, relwidth=0.6, relheight=0.10)
  134. self.title['font'] = title_font
  135. self.title['text'] = "Phone:"
  136. self.title['bg'] = "#bce672"
  137. self.title['anchor'] = 'e'
  138. self.enter['font'] = title_font
  139. self.enter['textvariable'] = self.var
  140. self.title.place(relx=0.02, rely=0.2, relwidth=0.25, relheight=0.48)
  141. self.enter.place(relx=0.30, rely=0.2, relwidth=0.60, relheight=0.48)
  142. self.btn['font'] = btn_font
  143. self.btn['text'] = "Creat"
  144. self.btn['bg'] = conf.tk_btn_bg
  145. self.btn.place(relx=0.4, rely=0.7, relwidth=0.2, relheight=0.08)
  146. def set_disable(self):
  147. self.btn['state'] = 'disable'
  148. self.enter['state'] = 'disable'
  149. def reset_disable(self):
  150. self.btn['state'] = 'normal'
  151. self.enter['state'] = 'normal'
  152. class CreatGarbageProgram(AdminProgram):
  153. def __init__(self, station, win, color):
  154. super().__init__(station, win, color, "CreatGarbage")
  155. self.enter_frame = tk.Frame(self.frame)
  156. self.title: List[tk.Label] = [tk.Label(self.enter_frame), tk.Label(self.enter_frame)]
  157. self.enter: List[tk.Entry] = [tk.Entry(self.enter_frame), tk.Entry(self.enter_frame)]
  158. self.var: List[tk.Variable] = [tk.StringVar(), tk.StringVar()]
  159. self.creat_btn: tk.Button = tk.Button(self.frame)
  160. self.file_btn: tk.Button = tk.Button(self.frame)
  161. self.__conf_font()
  162. def __conf_font(self, n: int = 1):
  163. self.title_font_size = int(16 * n)
  164. self.btn_font_size = int(14 * n)
  165. def conf_gui(self, n: int = 1):
  166. self.__conf_font(n)
  167. title_font = make_font(size=self.title_font_size)
  168. btn_font = make_font(size=self.btn_font_size)
  169. self.enter_frame['bg'] = "#b69968"
  170. self.enter_frame['bd'] = 5
  171. self.enter_frame['relief'] = "ridge"
  172. self.enter_frame.place(relx=0.2, rely=0.3, relwidth=0.6, relheight=0.17)
  173. height = 0.1
  174. for lb, text, enter, var in zip(self.title, ["Count:", "Export:"], self.enter, self.var):
  175. lb['font'] = title_font
  176. lb['text'] = text
  177. lb['bg'] = "#b69968"
  178. lb['anchor'] = 'e'
  179. enter['font'] = title_font
  180. enter['textvariable'] = var
  181. lb.place(relx=0.01, rely=height, relwidth=0.30, relheight=0.35)
  182. enter.place(relx=0.35, rely=height, relwidth=0.60, relheight=0.35)
  183. height += 0.43
  184. for btn, text, x in zip([self.creat_btn, self.file_btn], ["Creat", "ChoosePath"], [0.2, 0.6]):
  185. btn['font'] = btn_font
  186. btn['text'] = text
  187. btn['bg'] = conf.tk_btn_bg
  188. btn.place(relx=x, rely=0.7, relwidth=0.2, relheight=0.08)
  189. def set_disable(self):
  190. self.creat_btn['state'] = 'disable'
  191. self.file_btn['state'] = 'disable'
  192. set_tk_disable_from_list(self.enter)
  193. def reset_disable(self):
  194. self.creat_btn['state'] = 'normal'
  195. self.file_btn['state'] = 'normal'
  196. set_tk_disable_from_list(self.enter, flat='normal')
  197. all_program = [WelcomeProgram, CreatNormalUserProgram, CreatManagerUserProgram, CreatAutoNormalUserProgram,
  198. CreatGarbageProgram]