上图是我制作的一个python与unity通讯的ui测试界面

今天花五分钟我们聊聊使用Python快速制作UI,在开发过程中我们会有一些测试工具的需求,只注重功能,并不在乎UI的美观性,只要够稳定,开发速度够快。

当谈到使用 Python 迅速搭建用户界面时,我们不得不提 Tkinter。借助这个 Python 的标准 GUI 工具包,

你可以在短短几分钟内创建出基本的用户界面,下面我们简单了解下这个工

具的特性。

Tkinter 是 Python 的一个标准 GUI(图形用户界面)工具包,用于创建

窗口、按钮、文本框等用户界面元素,使得 Python 开发者能够轻松地构建

交互式应用程序。Tkinter 是 Python 的标准库之一,因此不需要额外安装

就可以使用。

Tkinter 提供了一组丰富的组件,包括但不限于:
窗口(Window):Tkinter 允许你创建应用程序的主窗口。
标签(Label):用于显示文本或图像。
按钮(Button):用于触发特定操作或函数。
文本框(Entry):用于用户输入文本。
列表框(Listbox):用于显示列表,用户可以选择其中的项。
滚动条(Scrollbar):用于滚动大量内容的组件,如文本框和列表框。
Tkinter 的工作方式是通过创建 GUI 组件的实例,并使用几何布局管理器(如 pack、grid、place)来安排它们在窗口中的位置。
下面是一个简单的 Tkinter 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

import tkinter as tk

def test_label():
root = tk.Tk()
label = tk.Label(root, text="This is a Label")
label.pack()
root.mainloop()

def test_button():
root = tk.Tk()
def button_click():
print("Button clicked!")
button = tk.Button(root, text="Click Me", command=button_click)
button.pack()
root.mainloop()

def test_entry():
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
root.mainloop()

def test_listbox():
root = tk.Tk()
listbox = tk.Listbox(root)
for i in range(10):
listbox.insert(tk.END, f"Item {i+1}")
listbox.pack()
root.mainloop()

def test_scrollbar():
root = tk.Tk()
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
text = tk.Text(root, yscrollcommand=scrollbar.set)
for i in range(100):
text.insert(tk.END, f"Line {i+1}\n")
text.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar.config(command=text.yview)
root.mainloop()

if __name__ == "__main__":
test_label()
test_button()
test_entry()
test_listbox()
test_scrollbar()

这段代码创建了一个简单的窗口,包含一个按钮。当用户点击按钮时,"Button, Click!" 将打印到控制台上。

下面对一些需要注意的函数进行说明。

pack

pack() 是 Tkinter 中用于布局管理的方法之一,它用于将组件添加到父容器中,并根据一定的规则来安排它们的位置。

pack() 方法通常用于简单的布局需求,它会根据添加组件的顺序自动放置组件,如果没有指定具体位置,则默认按照垂直方向或水平方向排列。

可以通过 side 参数指定组件的放置方向(tk.TOP、tk.BOTTOM、tk.LEFT、tk.RIGHT),以及通过其他参数进行边距和填充的设置。

示例:label.pack()、button.pack(side=tk.LEFT)。

root.mainloop

root.mainloop() 是 Tkinter 中的一个方法,它表示进入 Tkinter 的主事件循环(main event loop)。这个方法告诉 Tkinter 开始监听用户输入、处理事件和更新界面的状态。一旦调用了 mainloop() 方法,程序就会进入一个循环,持续监听用户的操作,直到用户关闭了应用程序的主窗口,或者通过代码显式地中止这个循环。

在 Tkinter 中,用户的交互操作(比如点击按钮、输入文本等)会触发事件,而这些事件需要被 Tkinter 的事件循环处理。mainloop() 方法负责启动这个事件循环,使得程序能够响应用户的输入,并实时更新界面的状态。

一旦调用了 mainloop() 方法,程序就会进入等待用户操作的状态,直到用户关闭了窗口或者其他结束条件被触发。因此,通常在创建了所有的 GUI 组件后,会调用 mainloop() 方法来启动程序的主事件循环,使得用户能够与界面进行交互。

下期预告

如果你觉得Tkinter不够好看,当然也有一些美化方案我们放到下期讲。
这是一个名为modern gui的美化方案,感兴趣可以提前预习下。

https://medium.com/@fareedkhandev/modern-gui-using-tkinter-12da0b983e22