3. 常用控件:按钮、输入框、标签
这是什么:控件(Widget,小部件)是组成界面的零件——按钮、输入框、标签、勾选框、下拉框……Tkinter 自带十几个,本章学会最常用的六个。
为什么用:上一章的窗口只会说"你好",本章结束它就能听你说话、按你指挥干活。所有桌面软件——记事本、计算器、待办清单——拆开看都是这几个控件的排列组合。
如何用:先逐个认识六个控件的创建方式,再用一个「按钮改标签」的小例子把"读取输入 → 处理 → 更新显示"串起来。
六个高频控件一览
| 控件 | 写法 | 长什么样 | 用来干嘛 |
|---|---|---|---|
| Label 标签 | tk.Label(root, text="文字") |
一行只读文字/图片 | 显示信息、说明 |
| Button 按钮 | tk.Button(root, text="点我") |
可点击的方块 | 触发一个动作 |
| Entry 输入框 | tk.Entry(root) |
单行白框 | 收一行文字 |
| Text 文本框 | tk.Text(root, height=5) |
多行编辑区 | 收多行文字 |
| Checkbutton 勾选框 | tk.Checkbutton(root, text="同意") |
☑ 选项 | 开/关某个功能 |
| Radiobutton 单选钮 | tk.Radiobutton(root, text="男") |
◉ 选项 | 一组里只能选一个 |
创建方式和 Label 一样:第一个参数写它属于哪个窗口/容器,然后必须 pack() 上架才看得见。
按钮 + 输入框 + 标签:最小可用交互
import tkinter as tk
def greet():
name = entry.get()
label.config(text=f"你好,{name}!")
root = tk.Tk()
root.title("打招呼机")
root.geometry("300x160")
label = tk.Label(root, text="等你打招呼")
label.pack(pady=10)
entry = tk.Entry(root, width=20)
entry.pack(pady=5)
button = tk.Button(root, text="打招呼", command=greet)
button.pack(pady=5)
root.mainloop()
你会看到:窗口里从上到下三件套——提示标签、输入框、按钮。在框里输入 青蛙 点按钮,标签立刻变成"你好,青蛙!";什么都不输就点,标签变成"你好,!"(第 5 章教怎么处理这种空输入)。
| 代码 | 作用 |
|---|---|
entry.get() |
读取输入框当前文字(永远是字符串,数字要自己 int() 转) |
label.config(text=...) |
更新已有控件的属性,界面立即刷新 |
command=greet |
把函数本身交给按钮(注意没有括号!写 greet() 等于创建按钮时就跑了一遍) |
pack(pady=10) |
上架并留 10 像素上下间距 |
command不带括号是 GUI 新手第一道坎:按钮要的是"将来要点的事",不是"现在就办的事"。传函数名、不传调用,这个习惯从这一章用到第 8 章。
读取和清空的其他常用动作
entry.insert(0, "默认值") # 在位置 0 填入文字(打开预填)
entry.delete(0, "end") # 从开头清到结尾
text.get("1.0", "end") # Text 是多行的,行号.列号表示位置,"1.0" 即第 1 行第 0 列
记忆口诀:get 读、insert 写、delete 清、config 改;command 传函数别加括号。
动手改
- 在
greet里加一行entry.delete(0, "end")——每次打完招呼输入框自动清空 - 把
label.config换成改一个计数器:每点一次按钮,标签显示"你点了 N 次"(提示:在函数外用变量存次数,函数里用global或本章先用简单方法改) - 加一个 Checkbutton 和 Radiobutton 组,先只求"摆出来能点",勾选状态怎么读是第 5 章的事
下一章:布局管理:pack / grid / place 🐸