tkinter中各组件的属性设置及应用举例
Tkinter是Python的标准GUI库,其组件(控件)丰富,每个组件都有一系列属性(选项)用于定制外观和行为。下面为你整理常用Tkinter组件的属性设置及应用举例,涵盖Label、Button、Entry、Text、Frame、Canvas、Checkbutton、Radiobutton、Listbox、Scale、OptionMenu、Scrollbar等。
1. Label(标签)
用于显示文本或图片。
常用属性:
- text:显示的文本。
- font:字体,如("Arial", 12)。
- fg/bg:前景色/背景色。
- width/height:宽高(字符单位)。
- padx/pady:内边距。
- anchor:文本对齐方式,如W、CENTER。
- image:显示图片(PhotoImage格式)。
示例:
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello", font=("Arial", 16), fg="red", bg="yellow",
width=10, height=2, padx=5, pady=5, anchor="w")
label.pack()
root.mainloop()
2. Button(按钮)
用于触发命令。
常用属性:
- text:按钮显示文字。
- command:点击时调用的函数。
- bg/fg:背景/前景色。
- state:状态(normal/disabled)。
- image:按钮上显示图片。
- compound:图片与文字位置(left/right/top/bottom/center)。
示例:
def say_hello():
print("Hello!")
btn = tk.Button(root, text="Click me", command=say_hello, bg="blue", fg="white")
btn.pack()
3. Entry(单行输入框)
用于输入单行文本。
常用属性:
- width:宽度(字符数)。
- show:密码模式(如*)。
- bg/fg/font:背景/前景色/字体。
- state:状态(normal/disabled/readonly)。
- textvariable:绑定变量(StringVar)。
示例:
var = tk.StringVar()
entry = tk.Entry(root, width=20, textvariable=var, show="*", font=("Arial", 12))
entry.pack()
4. Text(多行文本框)
用于多行文本输入。
常用属性:
- width/height:宽高(字符单位)。
- bg/fg/font:背景/前景色/字体。
- state:状态。
- wrap:换行方式("word"/"char"/"none")。
示例:
text = tk.Text(root, width=30, height=5, font=("Times", 11))
text.pack()
5. Frame(框架)
用于容器布局。
常用属性:
- bg/relief/bd:背景色/边框样式/边框宽度。
- width/height:宽高(像素)。
示例:
frame = tk.Frame(root, bg="green", width=100, height=50)
frame.pack()
6. Canvas(画布)
用于绘图。
常用属性:
- width/height:画布大小。
- bg:背景色。
- highlightthickness:高亮边框宽度。
示例:
canvas = tk.Canvas(root, width=200, height=100, bg="white")
canvas.create_rectangle(10, 10, 80, 50, fill="red")
canvas.pack()
7. Checkbutton(复选框)
多选按钮。
常用属性:
- text:标签文本。
- variable:绑定变量(IntVar/BooleanVar)。
- onvalue/offvalue:选中/未选中值。
- command:状态改变时调用的函数。
示例:
var = tk.IntVar()
cb = tk.Checkbutton(root, text="同意", variable=var, onvalue=1, offvalue=0)
cb.pack()
8. Radiobutton(单选框)
单选按钮组。
常用属性:
- text:标签文本。
- variable:绑定变量(同一组用同一个变量)。
- value:该选项的值。
- command:选择时调用的函数。
示例:
r_var = tk.StringVar()
rb1 = tk.Radiobutton(root, text="男", variable=r_var, value="male")
rb2 = tk.Radiobutton(root, text="女", variable=r_var, value="female")
rb1.pack()
rb2.pack()
9. Listbox(列表框)
显示多个选项,可单选或多选。
常用属性:
- height:显示行数。
- selectmode:选择模式(single/brow/multiple/extended)。
示例:
listbox = tk.Listbox(root, height=5, selectmode=tk.MULTIPLE)
for item in ["A", "B", "C"]:
listbox.insert(tk.END, item)
listbox.pack()
10. Scale(滑动条)
用于选择数值。
常用属性:
- from_/to:范围。
- orient:方向(HORIZONTAL/VERTICAL)。
- command:拖动时调用的函数。
示例:
def show_value(val):
print("当前值:", val)
scale = tk.Scale(root, from_=0, to=100, orient=tk.HORIZONTAL, command=show_value)
scale.pack()
11. OptionMenu(下拉菜单)
显示下拉列表。
常用属性:
- variable:绑定变量(StringVar)。
- values:下拉选项元组。
示例:
var = tk.StringVar()
options = ("苹果", "香蕉", "梨")
om = tk.OptionMenu(root, var, *options)
om.pack()
12. Scrollbar(滚动条)
配合Text、Listbox等实现滚动。
常用属性:
- command:关联控件的xview/yview。
- orient:方向。
示例:
text = tk.Text(root, height=4)
scroll = tk.Scrollbar(root, command=text.yview)
text.config(yscrollcommand=scroll.set)
text.pack(side=tk.LEFT)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
通用属性(大部分组件都支持)
- padx/pady:外边距。
- ipadx/ipady:内边距。
- anchor:对齐方式(N/S/E/W/CENTER等)。
- relief:边框样式(flat/sunken/raised/groove/ridge)。
- bd/highlightthickness:边框宽度/高亮厚度。
- cursor:鼠标样式(arrow/xterm/circle等)。
- state:控件状态(normal/disabled/active等)。
- takefocus:是否可被Tab键聚焦。
应用举例:简单表单界面
import tkinter as tk
root = tk.Tk()
root.title("简单表单")
tk.Label(root, text="用户名:").grid(row=0, column=0, padx=5, pady=5)
user_entry = tk.Entry(root)
user_entry.grid(row=0, column=1, padx=5, pady=5)
tk.Label(root, text="密码:").grid(row=1, column=0, padx=5, pady=5)
pwd_entry = tk.Entry(root, show="*")
pwd_entry.grid(row=1, column=1, padx=5, pady=5)
def submit():
print("用户名:", user_entry.get())
print("密码:", pwd_entry.get())
tk.Button(root, text="提交", command=submit).grid(row=2, column=1, padx=5, pady=5)
root.mainloop()
总结
- Tkinter各组件属性丰富,可通过参数定制外观、行为、布局、事件等。
- 大部分组件都支持通用属性(如bg/fg/font/padx/pady/state等)。
- 实际应用时建议结合布局管理器(pack/grid/place)、变量绑定(StringVar/IntVar等)、事件处理(command/bind)进行综合设计。
如需某个组件的详细属性列表或特殊用法,可查阅Tkinter官方文档或使用help(组件名)查看。
