Python GUI 新手入门教程:轻松构建图形用户界面

Python/ target=_blank class=infotextkey>Python 凭借其简单性和多功能性,已经成为最流行的编程语言之一 。被广泛应用于从 web 开发到数据科学的各个领域 。
在本教程中 , 我们将探索用于创建图形用户界面(GUIs)的 Python 内置库:
Tkinter:无论你是初学者还是经验丰富的开发人员,了解如何创建 Python GUI 都可以增强你构建交互式应用程序的能力 。
Tkinter 是 Python 附带的标准 GUI 工具包 。它提供了一组用于创建图形用户界面的工具和小部件 。
一、从创建一个简单的 Hello World 开始让我们从一个基本的例子开始了解 Tkinter 。打开你最喜欢的 Python 编辑器(我的是 Pycharm)并创建一个新文件,例如就叫 hello_tkinter.py 。编写以下代码:
import tkinter as tkdef say_hello():label.config(text="Hello, Tkinter!")# Create the mAIn windowroot = tk.Tk()root.title("Tkinter Hello World")# Create a label widgetlabel = tk.Label(root, text="Welcome to Tkinter!")# Pack the label into the main windowlabel.pack(pady=10)# Create a button widgetbutton = tk.Button(root, text="Say Hello", command=say_hello)# Pack the button into the main windowbutton.pack(pady=10)# Start the Tkinter event looproot.mainloop()输出:
保存文件并运行它,你应该会看到一个带有标签和按钮的窗口 , 点击该按钮将把标签文本更改为"Hello, Tkinter!":

Python GUI 新手入门教程:轻松构建图形用户界面

文章插图

Python GUI 新手入门教程:轻松构建图形用户界面

文章插图
二、Tkinter 基础现在我们已经创建了一个简单的 Tkinter 应用程序 , 让我们深入研究一些基本概念和小部件 。
2.1 小部件(Widgets)小部件是 Tkinter GUI 的构建模块 。它们可以是按钮、标签、输入字段等等 。比如在前面的例子中我们已经使用了 Label 和 Button 小部件 。
输入小部件(Entry Widget)Entry Widget 允许用户输入一行文本 。现在让我们扩展我们的 Hello, Tkinter! 的示例,通过添加一个 Entry Widget 来获取用户名:
【Python GUI 新手入门教程:轻松构建图形用户界面】import tkinter as tkdef say_hello():name = entry.get()label.config(text=f"Hello, {name}!")# Create the main windowroot = tk.Tk()root.title("Tkinter Hello World")# Create a label widgetlabel = tk.Label(root, text="Welcome to Tkinter!")# Pack the label into the main windowlabel.pack(pady=10)# Create a button widgetbutton = tk.Button(root, text="Say Hello", command=say_hello)# Pack the button into the main windowbutton.pack(pady=10)# Create an entry widgetentry = tk.Entry(root)# Pack the entry widget into the main windowentry.pack(pady=10)# Start the Tkinter event looproot.mainloop()通过这个修改,用户可以在 Entry Widget 中输入他们的名字,点击 Say Hello 按钮将会向他们打招呼 。
演示:
Python GUI 新手入门教程:轻松构建图形用户界面

文章插图

Python GUI 新手入门教程:轻松构建图形用户界面

文章插图
2.2 布局管理(Layout Management)Tkinter 提供多种几何管理器来组织窗口内的小部件 。我们前面使用的 pack() 方法就是其中之一 。此外,你还可以使用 grid() 和 place() 进行更复杂的布局 。
网格布局(Grid Layout)你可以使用 grid() 方法创建类似网格的布局 。让我们在我们的示例中加入网格布局:
# ...# Pack the label and entry widgets into the main window using the grid layoutlabel.grid(row=0, column=0, pady=10)entry.grid(row=1, column=0, pady=10)# ...
注意:不能将 grid() 和 pack() 混合使用,否则运行程序会报如下错误:_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack 。
2.3 事件及事件处理(Events and Event Handling)在前面的示例中,我们使用 command 参数指定单击按钮时要调用的函数 。Tkinter 允许你将函数绑定到各种事件,例如单击按钮、按键或鼠标移动 。
让我们在 Entry Widget 中添加一个事件处理程序,以便在用户按下 Enter 键时向用户表示欢迎:
# ...def on_enter(event):say_hello()# Bind the on_enter function to the Enter key press evententry.bind("<Return>", on_enter)# ...现在,在 Entry Widget 中按 Enter 将触发 say_hello 函数 。
三、中级 Tkinter 概念前面我们已经了解 Tkinter 的基础知识,现在让我们探索其中更高级的概念吧!


推荐阅读