Tkinter 简介
Tkinter 是 Python 的标准 GUI 库,基于 Tk GUI 工具包,提供跨平台的窗体开发能力。其优势在于轻量、易学,适合快速开发小型应用或原型。
基础窗口创建
import tkinter as tk # 创建主窗口 root = tk.Tk() root.title("示例窗口") root.geometry("300x200") # 设置窗口大小 # 运行主循环 root.mainloop()Tk()初始化主窗口,mainloop()启动事件循环。geometry("宽x高")设置窗口尺寸,单位是像素。
常用控件
标签(Label)
label = tk.Label(root, text="Hello Tkinter!") label.pack() # 自动布局text属性设置显示文本,pack()将控件添加到窗口。
按钮(Button)
def on_click(): print("按钮被点击") button = tk.Button(root, text="点击", command=on_click) button.pack()command绑定点击事件的处理函数。
输入框(Entry)
entry = tk.Entry(root) entry.pack()- 使用
entry.get()获取输入内容。
布局管理
pack() 方法
按垂直或水平方向自动排列控件。
label1.pack(side="left") # 靠左 label2.pack(side="top") # 靠上https://www.zhihu.com/zvideo/1994546290940470360/
https://www.zhihu.com/zvideo/1994546291057907535/
https://www.zhihu.com/zvideo/1994546289782833961/
https://www.zhihu.com/zvideo/1994546288683939246/
https://www.zhihu.com/zvideo/1994546287375307949/
https://www.zhihu.com/zvideo/1994546285974423177/
https://www.zhihu.com/zvideo/1994546285961815984/
https://www.zhihu.com/zvideo/1994546283894043395/
https://www.zhihu.com/zvideo/1994546282300200142/
https://www.zhihu.com/zvideo/1994546282048529025/
https://www.zhihu.com/zvideo/1994546281532630379/
https://www.zhihu.com/zvideo/1994546281109020759/
https://www.zhihu.com/zvideo/1994546279955583155/
https://www.zhihu.com/zvideo/1994546280349849069/
https://www.zhihu.com/zvideo/1994546280328878051/
https://www.zhihu.com/zvideo/1994546279716512594/
https://www.zhihu.com/zvideo/1994546279158681971/
https://www.zhihu.com/zvideo/1994546275316692342/
https://www.zhihu.com/zvideo/1994546275203432539/
https://www.zhihu.com/zvideo/1994546272384880849/
https://www.zhihu.com/zvideo/1994546270346442575/
https://www.zhihu.com/zvideo/1994546268832301841/
https://www.zhihu.com/zvideo/1994546269721474440/
https://www.zhihu.com/zvideo/1994546268828087302/
https://www.zhihu.com/zvideo/1994546267825644607/
https://www.zhihu.com/zvideo/1994546268190560614/
https://www.zhihu.com/zvideo/1994546265397163228/
https://www.zhihu.com/zvideo/1994546264621203989/
https://www.zhihu.com/zvideo/1994546262888960755/
https://www.zhihu.com/zvideo/1994546261966214683/
https://www.zhihu.com/zvideo/1994546259453838357/
https://www.zhihu.com/zvideo/1994546259315414706/
https://www.zhihu.com/zvideo/1994546258803700421/
https://www.zhihu.com/zvideo/1994546257981621460/
https://www.zhihu.com/zvideo/1994546257406996606/
https://www.zhihu.com/zvideo/1994546257004364716/
https://www.zhihu.com/zvideo/1994546256991760668/
https://www.zhihu.com/zvideo/1994546254923986049/
https://www.zhihu.com/zvideo/1994546254127063041/
https://www.zhihu.com/zvideo/1994546254110283192/
https://www.zhihu.com/zvideo/1994546251597894245/
https://www.zhihu.com/zvideo/1994546252218655830/
https://www.zhihu.com/zvideo/1994546250796778660/
https://www.zhihu.com/zvideo/1994546250738070087/
https://www.zhihu.com/zvideo/1994546250134069484/
https://www.zhihu.com/zvideo/1994546250327024294/
https://www.zhihu.com/zvideo/1994546249622376868/
https://www.zhihu.com/zvideo/1994546247982409281/
https://www.zhihu.com/zvideo/1994546247248409449/
https://www.zhihu.com/zvideo/1994546245042201245/
grid() 方法
网格布局,适合复杂界面。
label.grid(row=0, column=0) # 第0行第0列 button.grid(row=1, column=1)place() 方法
绝对定位,通过坐标控制位置。
label.place(x=50, y=100) # 坐标(50, 100)事件绑定
def on_key(event): print(f"按下按键: {event.char}") root.bind("<Key>", on_key) # 绑定键盘事件- 常见事件:
<Button-1>(鼠标左键)、<Return>(回车键)。
高级功能
弹窗(MessageBox)
from tkinter import messagebox messagebox.showinfo("提示", "操作成功")- 支持
showwarning、showerror等类型。
菜单栏(Menu)
menubar = tk.Menu(root) file_menu = tk.Menu(menubar, tearoff=0) file_menu.add_command(label="打开") menubar.add_cascade(label="文件", menu=file_menu) root.config(menu=menubar)画布(Canvas)
canvas = tk.Canvas(root, width=200, height=100) canvas.create_line(0, 0, 200, 100) # 绘制直线 canvas.pack()实战示例:简易计算器
def calculate(): try: result = eval(entry.get()) output.config(text=f"结果: {result}") except: output.config(text="输入错误") entry = tk.Entry(root) entry.pack() button = tk.Button(root, text="计算", command=calculate) button.pack() output = tk.Label(root, text="结果将显示在这里") output.pack()学习资源推荐
- 官方文档:https://docs.python.org/3/library/tkinter.html
- 书籍:《Python GUI编程 with Tkinter》
- 社区:Stack Overflow 的 Tkinter 标签。
通过实践逐步掌握控件、布局和事件处理,可快速构建功能完整的桌面应用。