tkinter 作为 python 标准库,兼具环境友好、简单易用等特性。然而一直以来,其难以构建复杂动态 GUI 的问题一直被诟病。在此,参考开源案例,尝试开发类 WEB 界面开发。

1 界面展示

2 内容刷新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def flush_gui(self):
gui_width = self.root.winfo_width()
gui_height = self.root.winfo_height()
oper_order = self.oper_order
name = self.name
button_click = self.button_click
if self.root.state() == "zoomed":
max_gui = 1
else:
max_gui = 0
self.root.destroy()
win = Window(
name=name,
oper_order=oper_order,
button_click=button_click,
gui_width=gui_width,
gui_height=gui_height,
max_gui= max_gui
)
win.root.mainloop()

3 核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Window:
def __init__(self, name="Homepage", oper_order=0, button_click=2, gui_width=1500, gui_height=1200, max_gui = 0):
self.root = tk.Tk()
self.gui_width = gui_width
self.gui_height = gui_height
self.max_gui = max_gui
self.name = name
if max_gui == 1:
self.root.state("zoomed")
self.root.geometry("%dx%d" % (gui_width, gui_height))
center_window(self.root)
self.root.title("Integrated Photonics Prediction System -- "+name)
self.root.iconbitmap(r"images\gui_img\logo.ico") # 窗体图标
self.root.grab_set()
self.oper_order = oper_order
self.button_click = button_click
self.body()

4 总结

通过这一次 tkinter 的开发尝试,发现 tkinter 具备开发复杂 GUI 界面的能力,但是需要通过精心的构造。

⚓ Carl Zhao
🏢 逍遥科技有限公司
💭 曾经也是追光少年,然而少年归来已不再是少年,但依然在追光的路上。
📧 邮箱:1005513510@qq.com