2. 环境自检与第一个窗口
这是什么:环境自检就是用一条命令确认你的 Python 真的带 Tkinter;第一个窗口则是学会给窗口起标题、定大小、往里放文字。
为什么用:Tkinter 虽然零安装,但各系统给的程度不一样——Windows/macOS 官方安装包默认带全,Linux 很多发行版把它拆成单独的包,装了 Python 也可能缺。先花两分钟自检,能避免后面每章都卡在 ModuleNotFoundError 上排查半天。
如何用:先跑 python -m tkinter 验货,缺了就补装;然后写一个带标题、尺寸、标签的正式小窗口。
一条命令自检
python -m tkinter
你会看到:弹出一个信息小窗,写着 This is Tcl/Tk version 8.6.x——看到它说明一切就绪(本站版本基线:Python 3.15 + Tcl/Tk 8.6,2026-10 核对)。
报 ModuleNotFoundError: No module named 'tkinter' 的,按系统补装:
| 系统 | 补装方法 |
|---|---|
| Windows / macOS | 重装官方 Python(python.org 下载),安装时勾选 tcl/tk;用微软商店版 Python 常缺,建议换官方安装包 |
| Ubuntu / Debian | sudo apt install python3-tk |
| Fedora / CentOS | sudo dnf install python3-tkinter |
| Arch | sudo pacman -S tk |
| macOS Homebrew 版 Python | brew install python-tk |
Windows 用户注意:如果
python命令本身不存在,试试py -m tkinter——py是官方安装器自带的启动器。
给窗口立规矩
自检过了,写一个正经的第一窗:
import tkinter as tk
root = tk.Tk()
root.title("我的第一个桌面程序")
root.geometry("320x200")
root.resizable(False, False)
label = tk.Label(root, text="你好,桌面程序!")
label.pack()
root.mainloop()
你会看到:一个 320×200 的小窗口出现在屏幕中央,标题栏显示"我的第一个桌面程序",窗口正中间一行黑字"你好,桌面程序!",最大化按钮是灰的(点不动)。
| 代码 | 作用 |
|---|---|
root.title("...") |
设置标题栏文字 |
root.geometry("宽x高") |
设置初始尺寸,注意是小写 x,不是乘号 × 也不是空格 |
root.resizable(False, False) |
禁止拖大拖小(第一个参数管宽,第二个管高) |
tk.Label(root, text="...") |
创建一个标签(只读文字控件),第一个参数说明它放在哪个窗口里 |
label.pack() |
把标签"放"进窗口——不放这一行,控件存在但看不见,新手头号大坑 |
事件循环到底在干嘛
把 mainloop() 想成餐厅服务员:菜(你的控件)已经摆上桌,服务员不会自己去吃,而是站在旁边等你点单。你每点一次按钮、敲一次键,她就跑一趟厨房(调用你注册的函数),回来继续站岗。程序退出时点单结束——所以你几乎永远不会"跑完"一个 GUI 程序,都是点关闭按钮杀出来的。
这也是 GUI 教程和前面章节最大的体验差别:代码跑没跑对,要用眼睛看窗口,不是看终端输出。本站的在线运行场跑不了 Tkinter(沙箱里没有显示器,也打不开窗口),从这一章起,每章代码都要复制到你自己的电脑上运行。
记忆口诀:title 管名字,geometry 管身材,resizable 管能不能捏,pack 不上台、控件就隐身。
动手改
- 把
label.pack()注释掉运行——窗口一片空白,但程序没报错;再放回来,理解"创建"和"摆放"是两回事 - 把
geometry("320x200")改成geometry("600x100"),再试geometry("+100+400")——后面这种是设置窗口出现的位置 - 往窗口里再
pack一个 Label,显示你的名字——两个标签会竖着排,第 4 章讲怎么让它们横着排、想排哪排哪
下一章:常用控件:按钮、输入框、标签 🐸