首页 › 论坛 › 置顶 › 使用Python制作GUI应用程序
正在查看 1 个帖子:1-1 (共 1 个帖子)
-
作者帖子
-
2025-09-10 10:06 #26042Q QPY课程团队管理员
什么是tkinter?
Tkinter 是Python的标准图形用户界面(GUI)库。
- 内置:如果你使用的是默认的Python发行版,则无需单独安装 – 它随Python一起提供。
- 包装器:它是一个薄的面向对象的包装器,围绕着Tcl/Tk,这是一个较旧但非常稳定的GUI工具包。
- 目的:让你能够构建具有窗口、按钮、标签、菜单、文本框等的桌面应用程序。
可以将其视为Python创建实际窗口的方式,而不仅仅是向终端打印信息。
开始第一个窗口
app.py
import tkinter as tk # 创建主应用程序窗口 root = tk.Tk() # 设置窗口标题
root.title("我的第一个 Tkinter 窗口") # 设置窗口大小(宽 x 高) root.geometry("400x300") # 启动 Tkinter 事件循环 root.mainloop()
打开终端并运行:python app.py
你将看到第一个小白窗口。
注意:我正在使用Python 3.12和Tcl-tk@8
如果您的PC尚未准备好,请安装Tcl-tk。
以下是在MacOS上安装它的方法(我使用的是Macbook M1)。
brew uninstall tcl-tk brew install tcl-tk@8
安装Python 3.12
我使用pyenv来管理Python版本,您可以通过以下命令安装它:
brew install pyenv
现在,安装带有Tcl-tk的Python 3.12
env PATH="/opt/homebrew/opt/tcl-tk@8/bin:$PATH" LDFLAGS="-L/opt/homebrew/opt/tcl-tk@8/lib" CPPFLAGS="-I/opt/homebrew/opt/tcl-tk@8/include"
PKG_CONFIG_PATH="/opt/homebrew/opt/tcl-tk@8/lib/pkgconfig" PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/opt/homebrew/opt/tcl-tk@8/include' --with-tcltk-libs='-L/opt/homebrew/opt/tcl-tk@8/lib -ltcl8.6 -ltk8.6'" pyenv install 3.12.8
添加第一个小部件
import tkinter as tk # 创建主窗口
root = tk.Tk() root.title("我的第一个 Tkinter 应用") root.geometry("400x250") # 添加一个标签 label = tk.Label(root, text="请输入您的名字:", font=("Arial", 12)) label.pack(pady=10) # 添加一个文本输入框
entry = tk.Entry(root, font=("Arial", 12)) entry.pack(pady=5) # 添加一个按钮 def say_hello(): name = entry.get() if name.strip(): output_label.config(text=f"你好, {name}!")
else: output_label.config(text="请输入您的名字。") button = tk.Button(root, text="提交", font=("Arial", 12), command=say_hello) button.pack(pady=10) # 输出标签
output_label = tk.Label(root, text="", font=("Arial", 12), fg="blue") output_label.pack(pady=10) # 运行应用程序 root.mainloop()
这是我们的输出:
什么是 tkinter 小部件?
在 Tkinter 中,小部件只是一个 GUI 元素——您应用窗口的构建块。
可以将它们视为您在任何桌面应用程序中看到的控件:
- 标签(文本)
- 按钮
- 文本框
- 复选框
- 单选按钮
- 菜单
- 框架(用于分组的容器)
基本上:您在 Tkinter 窗口中放置的所有内容都是小部件。
好的,现在让我们构建一个非常简单的用户资料编辑窗口。
添加资料窗口
profile.py
import tkinter as tk from tkinter import ttk # 创建主窗口 root = tk.Tk() root.title("资料窗口") root.geometry("400x500") root.configure(bg="#f5f5f5") # ---- 头部 ----
header = tk.Label(root, text="用户资料", font=("Arial", 18, "bold"), bg="#f5f5f5") header.pack(pady=15) # ---- 个人头像(作为标签的占位符) ----
profile_pic = tk.Label(root, text="👤", font=("Arial", 50), bg="#f5f5f5") profile_pic.pack(pady=10) # ---- 名字 ----
name_label = tk.Label(root, text="姓名:", font=("Arial", 12), anchor="w", bg="#f5f5f5") name_label.pack(fill="x", padx=20)
name_entry = tk.Entry(root, font=("Arial", 12)) name_entry.pack(fill="x", padx=20, pady=5) # ---- 邮箱 ----
email_label = tk.Label(root, text="电子邮件:", font=("Arial", 12), anchor="w", bg="#f5f5f5") email_label.pack(fill="x", padx=20)
email_entry = tk.Entry(root, font=("Arial", 12)) email_entry.pack(fill="x", padx=20, pady=5) # ---- 个人简介 ----
bio_label = tk.Label(root, text="生物信息:", font=("Arial", 12), anchor="w", bg="#f5f5f5") bio_label.pack(fill="x", padx=20)
bio_text = tk.Text(root, height=5, font=("Arial", 12)) bio_text.pack(fill="x", padx=20, pady=5) # ---- 保存按钮 ---- def save_profile(): name = name_entry.get() email = email_entry.get()
bio = bio_text.get("1.0", tk.END).strip() print("个人资料已保存:") print(f"姓名: {name}") print(f"电子邮件: {email}") print(f"个人简介: {bio}")
messagebox.showinfo("已保存", "个人信息已保存!") save_button = ttk.Button(root, text="保存个人资料", command=save_profile) save_button.pack(pady=20) root.mainloop()
我们来到了这里我们做了什么?我们制作了一个带有一些基本小部件的个人资料窗口:
- 一个标题(“用户个人资料”)。
- 一个占位符“个人资料图片”(现在只是一个Unicode 👤)。
- 姓名、电子邮件和个人简介的字段。
- 一个保存按钮,可以打印数据并显示消息框。
结论
对于已经拥有基于Python系统的开发者来说,只需要在其上添加一个简单的GUI层,Tkinter是理想的选择。
它内置于Python中,因此没有额外的依赖问题。
它与现有的Python代码无缝集成——您可以将脚本、函数或系统工具封装在一个带有按钮和输入的小窗口中。
开发过程快速而简单;几行Tkinter代码就可以将命令行脚本转变为可用的桌面工具。
-
作者帖子
正在查看 1 个帖子:1-1 (共 1 个帖子)
- 哎呀,回复话题必需登录。