文章目录
📖 前言
第一章:初识 Tkinter —— 第一个窗口
1.1 检查 Tkinter 是否安装
1.2 创建你的第一个窗口
第二章:常用组件 —— 搭建界面的“乐高积木”
2.1 Label —— 显示文字或图片
2.2 Button —— 用户点击触发动作
局(最常用)
3.3 place() —— 精确“像素级”定位
第三章:布局管理 —— 怎么把东西“摆好看”
3.1 pack() —— 最简单的“排队”布局
3.2 grid() —— 表格布局(最常用)
3.3 place() —— 精确“像素级”定位
第四章:事件绑定 —— 让组件“活”起来
第五章:画布 Canvas —— 让程序学会“画画”
5.1 创建画布
5.2 坐标系统(关键!)
5.3 常用绘图方法
🧁 结尾
📖 前言
写了这么久的代码,你一直对着那个黑乎乎的终端窗口——输入一行,输出一行,像在用对讲机跟电脑说话。
你不觉得有点寒酸吗?
别人打开一个软件,有按钮、有输入框、有漂亮的界面,点一点就能操作。而你写的程序,还得让用户打开命令行,敲 python xxx.py,然后盯着几行文字发呆。
这不叫“软件”,这叫“脚本”。
今天我们要学的 tkinter,就是帮你的代码装上一个可视化外壳——让用户能用鼠标点、用键盘敲、用眼睛看,而不是对着命令行猜谜。
Tkinter 是 Python 自带的 GUI 库,不需要额外安装,导入就能用。它跨平台,Windows、macOS、Linux 都能跑。虽然长得不算惊艳,但胜在简单、够用、不用折腾。
今天就带你把 Tkinter 的基础摸一遍:创建窗口、常用组件、布局管理、事件绑定。
让你的代码从此“有头有脸”。start show!🖥️
第一章:初识 Tkinter —— 第一个窗口
1.1 检查 Tkinter 是否安装
因为 Tkinter 是 Python 自带的,所以大概率已经有了。不放心的话可以验证一下:
python
import tkinter
print(f"Tkinter 版本: {tkinter.TkVersion}")
能打印出版本号就说明没问题。
1.2 创建你的第一个窗口
创建一个窗口,只需要四行代码:
python
import tkinter as tk
# 创建主窗口 —— 这就是你程序的“画布”
root = tk.Tk()
# 给窗口起个名字
root.title("我的第一个 GUI 程序")
# 设置窗口大小(宽 x 高)
root.geometry("400×300")
# 启动消息循环 —— 让窗口一直显示着,别闪退
root.mainloop()
运行这段代码,你会看到一个真正的窗口出现在屏幕上。
📌 别小看这几行代码,这可能是你第一次让 Python 弹出一个“正经的桌面应用”。 mainloop() 是关键——没有它,窗口一闪就没了。它就像电饭煲的“保温”按钮,让程序一直运行,随时响应你的操作。
第二章:常用组件 —— 搭建界面的“乐高积木”
窗口有了,但它是空的。往里面加东西,就要用到 组件(Widget) 。Tkinter 提供了十几种核心组件,常用的就下面几个。
这里顺便提一句:Canvas(画布组件)也是 tkinter 模块里的,和 Label、Button 是平级关系,都是 tkinter 下的类。后面讲画图的时候会单独展开。
2.1 Label —— 显示文字或图片
Label 就是用来显示静态文本的,用户没法改,只能看。
python
import tkinter as tk
root = tk.Tk()
root.title("标签示例")
root.geometry("300×200")
# 创建标签
label = tk.Label(root, text="欢迎来到 Python GUI 世界!", font=("微软雅黑", 16))
label.pack(pady=20) # pady 是上下外边距
root.mainloop()
📌 pack() 是布局方法,暂时理解为“把标签放上去”就行。pady=20 让标签离上下边界有点距离,不那么挤。
2.2 Button —— 用户点击触发动作
Button 是交互的核心——用户点一下,程序干一件事。
python
import tkinter as tk
def on_click():
print("按钮被点击了!")
root = tk.Tk()
root.title("按钮示例")
root.geometry("300×200")
btn = tk.Button(root, text="点我一下", command=on_click)
btn.pack(pady=50)
root.mainloop()
📌 command 参数指定点击后执行哪个函数,注意不要加括号——写 on_click 而不是 on_click()。加了括号函数会在创建按钮时就执行,而不是等用户点击。
局(最常用)
grid() 把窗口想象成一张表格,按行和列摆放组件。
python
import tkinter as tk
root = tk.Tk()
root.title("grid 布局示例")
root.geometry("300×150")
# 第0行:用户名
tk.Label(root, text="用户名:").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(root, width=20).grid(row=0, column=1, padx=5, pady=5)
# 第1行:密码
tk.Label(root, text="密码:").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(root, width=20, show="*").grid(row=1, column=1, padx=5, pady=5)
# 第2行:按钮(跨两列居中)
tk.Button(root, text="登录").grid(row=2, column=0, columnspan=2, pady=10)
root.mainloop()
📌 grid() 是实际开发中最常用的布局方式,因为表格结构最符合人类的视觉习惯。columnspan=2 让按钮跨两列居中。
3.3 place() —— 精确“像素级”定位
place() 用 x、y 坐标精确定位组件。
python
import tkinter as tk
root = tk.Tk()
root.title("place 布局示例")
root.geometry("300×200")
tk.Button(root, text="左上角").place(x=10, y=10)
tk.Button(root, text="右下角").place(x=200, y=150)
root.mainloop()
⚠️ place() 最灵活但也最麻烦——窗口大小一变,位置就全乱了。新手优先用 grid(),省心。
第三章:布局管理 —— 怎么把东西“摆好看”
组件创建了,但往窗口上放的时候,你得告诉 Tkinter 放哪儿、怎么放。Tkinter 提供了三种布局管理器。
3.1 pack() —— 最简单的“排队”布局
pack() 是最基础的布局方式——组件按添加顺序从上到下排队。
python
import tkinter as tk
root = tk.Tk()
root.title("pack 布局示例")
root.geometry("300×200")
tk.Label(root, text="第一个", bg="red").pack(fill=tk.X)
tk.Label(root, text="第二个", bg="green").pack(fill=tk.X)
tk.Label(root, text="第三个", bg="blue").pack(fill=tk.X)
root.mainloop()
fill=tk.X 让标签横向拉满。side=tk.LEFT 可以让组件水平排列。
3.2 grid() —— 表格布局(最常用)
grid() 把窗口想象成一张表格,按行和列摆放组件。
python
import tkinter as tk
root = tk.Tk()
root.title("grid 布局示例")
root.geometry("300×150")
# 第0行:用户名
tk.Label(root, text="用户名:").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(root, width=20).grid(row=0, column=1, padx=5, pady=5)
# 第1行:密码
tk.Label(root, text="密码:").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(root, width=20, show="*").grid(row=1, column=1, padx=5, pady=5)
# 第2行:按钮(跨两列居中)
tk.Button(root, text="登录").grid(row=2, column=0, columnspan=2, pady=10)
root.mainloop()
📌 grid() 是实际开发中最常用的布局方式,因为表格结构最符合人类的视觉习惯。columnspan=2 让按钮跨两列居中。
3.3 place() —— 精确“像素级”定位
place() 用 x、y 坐标精确定位组件。
python
import tkinter as tk
root = tk.Tk()
root.title("place 布局示例")
root.geometry("300×200")
tk.Button(root, text="左上角").place(x=10, y=10)
tk.Button(root, text="右下角").place(x=200, y=150)
root.mainloop()
⚠️ place() 最灵活但也最麻烦——窗口大小一变,位置就全乱了。新手优先用 grid(),省心。
第四章:事件绑定 —— 让组件“活”起来
前面按钮的 command 只能处理点击事件。如果想处理键盘按键、鼠标悬停、双击等更多交互,就要用 bind() 方法。
python
import tkinter as tk
def on_key_press(event):
print(f"按下了键:{event.char}")
def on_enter(event):
print("鼠标进入按钮区域")
def on_leave(event):
print("鼠标离开按钮区域")
root = tk.Tk()
root.title("事件绑定示例")
root.geometry("300×200")
# 绑定键盘事件到整个窗口
root.bind("<Key>", on_key_press)
btn = tk.Button(root, text="把鼠标放上来试试")
btn.pack(pady=50)
# 绑定鼠标进入和离开事件
btn.bind("<Enter>", on_enter)
btn.bind("<Leave>", on_leave)
root.mainloop()
常用事件类型:
| <Button-1> | 单击鼠标左键 |
| <Double-Button-1> | 双击鼠标左键 |
| <Key> | 按下任意键 |
| <Return> | 按下回车键 |
| <Enter> | 鼠标进入组件区域 |
| <Leave> | 鼠标离开组件区域 |
| <B1-Motion> | 按住左键拖动 |
第五章:画布 Canvas —— 让程序学会“画画”
前面我们提到,Canvas 也是 tkinter 模块下的一个组件类,和 Label、Button 是平级关系。它就像一块虚拟的白板,直线、矩形、圆形、文字,想画什么都行。
5.1 创建画布
python
import tkinter as tk
root = tk.Tk()
root.title("画布示例")
root.geometry("500×400")
canvas = tk.Canvas(root, width=500, height=400, bg="white")
canvas.pack()
root.mainloop()
5.2 坐标系统(关键!)
Canvas 的坐标原点在左上角,Y 轴向下增长——和数学坐标系相反。
text
(0,0) → X
↓
Y(向下增长)
5.3 常用绘图方法
| create_line(x1,y1, x2,y2) | 画直线 |
| create_rectangle(x1,y1, x2,y2) | 画矩形 |
| create_oval(x1,y1, x2,y2) | 画圆/椭圆 |
| create_polygon(x1,y1, x2,y2, …) | 画多边形 |
| create_arc(x1,y1, x2,y2, start, extent) | 画圆弧 |
| create_text(x, y, text=…) | 写文字 |
🎯 一张图总结
text
Tkinter 应用
① 创建窗口:Tk() + mainloop()
② 添加组件:Labe, Button, Entry, Text, Canvas
③ 布局管理:pack() / grid() / place()
④ 事件响应:command / bind()
⑤ Canvas画布:绘图 + 动画
🧁 结尾
到今天为止,你已经学会了:
创建窗口 —— 让 Python 不再是“黑框框”
添加组件 —— Label、Button、Entry、Text、Canvas,界面的基本积木
布局管理 —— pack、grid、place,把东西摆好看
事件绑定 —— 让用户的操作触发程序响应
Canvas 画布 —— 绘图和简单动画
Tkinter 虽然不算“颜值担当”,但胜在简单、够用、不用折腾环境。以后你想写个工具给自己用、给同事用,不用再对着命令行解释了——直接甩一个 py 文件过去,双击打开就能用。
网硕互联帮助中心




评论前必须登录!
注册