1. 复选框 (Checkbutton
)
复选框是一个方形按钮,可以被勾选或取消勾选。它非常适合用于提供用户从多个选项中选择一个或多个的情景。
创建复选框
要创建复选框,可以使用 Checkbutton
小部件。为了跟踪复选框的状态(是勾选还是未勾选),通常使用 IntVar
类型的变量:
当复选框勾选时,变量值为 1
;未勾选时,变量值为 0
。
import tkinter as tk
# 检查复选框状态的函数
def show_status():
print("开启" if var.get() == 1 else "关闭")
# 创建窗口
root = tk.Tk()
root.title("复选框示例")
# 用于保存状态的变量
var = tk.IntVar()
# 绑定到变量 var 的复选框
checkbox = tk.Checkbutton(root, text="启用设置", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
代码解释
-
variable=var
: 将复选框绑定到变量var
,复选框每次状态改变时变量都会更新。 -
函数
show_status()
: 在控制台输出复选框的当前状态。若勾选,则显示“开启”;若未勾选,则显示“关闭”。
多个复选框的使用
如果需要多个独立的选项,可以创建多个复选框,并给每个复选框绑定自己的变量。
# 保存状态的变量
option1 = tk.IntVar()
option2 = tk.IntVar()
# 复选框
check1 = tk.Checkbutton(root, text="选项 1", variable=option1)
check2 = tk.Checkbutton(root, text="选项 2", variable=option2)
check1.pack()
check2.pack()
2. 单选按钮 (Radiobutton
)
单选按钮是一组圆形按钮,用户只能从中选择一个选项。它们非常适合需要用户在多个选项中选择一个的场景。
创建单选按钮
要创建单选按钮,可以使用 Radiobutton
小部件。为了将多个单选按钮关联并使它们的选择互相排斥,所有单选按钮都需绑定到同一个变量(IntVar
或 StringVar
)。
# 显示选择项的函数
def show_choice():
print(f"选择了选项 {choice.get()}")
# 用于记录选择的变量
choice = tk.IntVar()
# 单选按钮
radio1 = tk.Radiobutton(root, text="选项 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="选项 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="选项 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
代码解释
-
variable=choice
: 将所有单选按钮绑定到同一个变量choice
,以确保它们互相排斥。 -
value
: 指定当选择某个单选按钮时,变量choice
的值。 -
函数
show_choice()
: 在控制台显示所选的选项。
带文本值的单选按钮
你也可以将单选按钮绑定到 StringVar
类型的变量,以使用文本值。
# 用于记录文本选择的变量
color_choice = tk.StringVar()
# 带文本值的单选按钮
radio_red = tk.Radiobutton(root, text="红色", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="蓝色", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="绿色", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. 微调框 (Spinbox
)
微调框允许用户从一个数值范围中选择一个值。这个小部件非常适合用于输入数值数据,比如年龄或数量。
创建微调框
在 Tkinter 中,微调框可以通过 Spinbox
小部件创建,用户既可以手动输入,也可以通过箭头选择值。
# 显示所选值的函数
def show_spin_value():
print(f"值:{spin.get()}")
# 1 到 10 的微调框
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
代码解释
from_
和to
: 定义微调框的数值范围。- 函数
show_spin_value()
: 在每次值改变时输出所选值到控制台。
设置步长和值
参数 increment
用于设置步长,参数 values
用于定义具体值。
# 步长为 2 的微调框
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# 使用指定值的微调框
spin_values = tk.Spinbox(root, values=("小", "中", "大"))
spin_values.pack(pady=5)
4. 示例应用程序
带复选框、单选按钮和微调框的应用程序示例
现在我们把这些结合起来,创建一个界面,包含复选框、单选按钮和微调框,让用户可以选择多个选项并查看结果。
import tkinter as tk
# 创建主窗口
root = tk.Tk()
root.title("包含复选框、单选按钮和微调框的示例")
root.geometry("300x300")
# 显示选择项的函数
def show_selections():
selections = []
selections.append(f"复选框选中:{'是' if option.get() == 1 else '否'}")
selections.append(f"选择的颜色:{color_choice.get()}")
selections.append(f"数量:{spin.get()}")
message_label.config(text="\n".join(selections))
# 复选框
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="启用设置", variable=option)
checkbox.pack(pady=5)
# 单选按钮
color_choice = tk.StringVar(value="红色")
tk.Label(root, text="选择颜色:").pack()
radio_red = tk.Radiobutton(root, text="红色", variable=color_choice, value="红色")
radio_blue = tk.Radiobutton(root, text="蓝色", variable=color_choice, value="蓝色")
radio_green = tk.Radiobutton(root, text="绿色", variable=color_choice, value="绿色")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
# 微调框
tk.Label(root, text="数量:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# 显示选择的按钮
show_button = tk.Button(root, text="显示选择", command=show_selections)
show_button.pack(pady=10)
# 显示结果的标签
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
完整示例解释
- 复选框: 用于标记“启用设置”。
- 单选按钮: 让用户从三个颜色中选择一个。
- 微调框: 让用户从 1 到 10 中选择一个数量。
- “显示选择”按钮: 将所有小部件的当前状态显示在
message_label
中。
GO TO FULL VERSION