CodeGym /课程 /Python SELF ZH /处理复选框、单选按钮和微调框

处理复选框、单选按钮和微调框

Python SELF ZH
第 50 级 , 课程 2
可用

1. 复选框 (Checkbutton)

复选框是一个方形按钮,可以被勾选或取消勾选。它非常适合用于提供用户从多个选项中选择一个或多个的情景。

创建复选框

要创建复选框,可以使用 Checkbutton 小部件。为了跟踪复选框的状态(是勾选还是未勾选),通常使用 IntVar 类型的变量: 当复选框勾选时,变量值为 1;未勾选时,变量值为 0

Python
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(): 在控制台输出复选框的当前状态。若勾选,则显示“开启”;若未勾选,则显示“关闭”。

多个复选框的使用

如果需要多个独立的选项,可以创建多个复选框,并给每个复选框绑定自己的变量。

Python
# 保存状态的变量
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 小部件。为了将多个单选按钮关联并使它们的选择互相排斥,所有单选按钮都需绑定到同一个变量(IntVarStringVar)。

Python
# 显示选择项的函数
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 类型的变量,以使用文本值。

Python
# 用于记录文本选择的变量
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 小部件创建,用户既可以手动输入,也可以通过箭头选择值。

Python
# 显示所选值的函数
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 用于定义具体值。

Python
# 步长为 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. 示例应用程序

带复选框、单选按钮和微调框的应用程序示例

现在我们把这些结合起来,创建一个界面,包含复选框、单选按钮和微调框,让用户可以选择多个选项并查看结果。

Python
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 中。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION