原文链接:http://www.juzicode.com/python-module-tkinter
Tkinter是Python标准GUI工具包,基于Tk图形库,提供跨平台GUI开发能力,适合快速创建桌面应用程序、工具界面和数据可视化前端。
应用场景
- 桌面应用开发
- 数据可视化界面
- 教学演示工具
- 自动化工具面板
- 原型系统开发
安装与导入
# Python内置模块,无需安装
import tkinter as tk
from tkinter import ttk, filedialog
基本用法
1. 创建基础窗口
初始化主窗口并设置基本属性,geometry控制初始尺寸,title设置窗口标题。mainloop启动事件循环。
# juzicode.com/VX公众号:juzicode
import tkinter as tk
root = tk.Tk()
root.title("我的第一个窗口")
root.geometry("400x300")
root.mainloop()
运行结果:
显示400x300像素的空白窗口
2. 标签与按钮组件
使用Label添加文本标签,Button创建可交互按钮。command参数绑定点击事件。
# juzicode.com/VX公众号:juzicode
import tkinter as tk
def on_click():
label.config(text="按钮已点击!")
root = tk.Tk()
label = tk.Label(root, text="初始文本")
button = tk.Button(root, text="点击我", command=on_click)
label.pack(pady=20)
button.pack()
root.mainloop()
运行结果:
点击按钮后标签文本更新

3. 输入框与文本获取
Entry组件创建单行输入框,StringVar实现数据绑定,get方法获取输入内容。
# juzicode.com/VX公众号:juzicode
import tkinter as tk
def show_text():
result.set(entry.get())
root = tk.Tk()
result = tk.StringVar()
entry = tk.Entry(root, width=30)
button = tk.Button(root, text="显示输入", command=show_text)
label = tk.Label(root, textvariable=result)
entry.pack(pady=10)
button.pack()
label.pack()
root.mainloop()
运行结果:
输入文本后点击按钮显示内容

4. 网格布局管理
使用grid布局实现行列排列,sticky参数控制组件对齐方式,适用于表单类界面。
# juzicode.com/VX公众号:juzicode
import tkinter as tk
root = tk.Tk()
tk.Label(root, text="用户名:").grid(row=0, column=0, sticky="e")
tk.Entry(root).grid(row=0, column=1)
tk.Label(root, text="密码:").grid(row=1, column=0, sticky="e")
tk.Entry(root, show="*").grid(row=1, column=1)
tk.Button(root, text="登录").grid(row=2, columnspan=2)
root.mainloop()
运行结果:
显示两行输入框和登录按钮的整齐布局

5. 文件对话框
集成系统原生文件选择对话框,支持多选和格式过滤,其中filedialog需单独导入。
# juzicode.com/VX公众号:juzicode
from tkinter import filedialog
import tkinter as tk
def open_file():
path = filedialog.askopenfilename(filetypes=[("文本文件", "*.txt")])
if path:
print(f"选中文件: {path}")
root = tk.Tk()
tk.Button(root, text="打开文件", command=open_file).pack(pady=50)
root.mainloop()
运行结果:
弹出系统文件选择对话框
6. 多窗口管理
使用Toplevel创建子窗口,实现多窗口交互,通过grab_set保持模态对话框焦点。
# juzicode.com/VX公众号:juzicode
import tkinter as tk
def open_child():
child = tk.Toplevel()
child.grab_set()
tk.Label(child, text="这是子窗口").pack()
root = tk.Tk()
tk.Button(root, text="打开子窗口", command=open_child).pack()
root.mainloop()
运行结果:
点击按钮弹出模态子窗口
7. Canvas绘图
使用Canvas组件绘制几何图形,支持动态更新。创建可交互的绘图应用基础。
# juzicode.com/VX公众号:juzicode
import tkinter as tk
def draw_circle():
canvas.create_oval(50, 50, 150, 150, fill="red")
root = tk.Tk()
canvas = tk.Canvas(root, width=200, height=200)
button = tk.Button(root, text="画圆", command=draw_circle)
canvas.pack()
button.pack()
root.mainloop()
运行结果:
点击按钮在画布上绘制红色圆形
总结
Tkinter为Python GUI开发提供基础支持:
- 内置标准无需额外安装
- 跨平台兼容Windows/macOS/Linux
- 提供基础组件和布局管理器
- 支持扩展和主题定制
注意事项:
- 界面样式较为传统
- 复杂动画性能有限
- 多线程处理需要谨慎