当你需要用户选择一个或多个选项时,可以使用复选框。在Python的Tkinter库中,复选框的实现是通过Checkbutton类。下面是一份完整攻略。
1. Checkbutton的基础用法
首先,我们来看一个简单的例子。我们创建了一个Checkbutton,用户可以通过点击它来激活或取消激活它。该程序还使用Label小部件来显示当前复选框的状态。
import tkinter as tk
def update():
# 更新Label的文本
if var1.get() == 1:
label.config(text="已选中")
else:
label.config(text="未选中")
root = tk.Tk()
# 创建Checkbutton
var1 = tk.IntVar()
c = tk.Checkbutton(root, text="复选框", variable=var1, command=update)
# 创建Label
label = tk.Label(root, text="未选中")
# 布局
c.pack()
label.pack()
root.mainloop()
该程序在默认情况下,Checkbutton处于未选中状态。每当用户单击Checkbutton时,IntVar对象var1的值将从0变为1或从1变为0。这个变化将会激活update()函数,该函数会更新Label的文本。
2. Checkbutton的属性
Checkbutton有几个可用的属性,可以用来自定义复选框。下面是一些最常用的属性:
属性 | 解释 |
---|---|
text | 显示在复选框旁边的文本 |
variable | 控制复选框选择状态的变量 |
command | 当复选框状态变化时调用的函数 |
state | "disable"(禁用)或"normal"(正常) |
下面是一个更高级的例子,演示了如何使用最广泛的属性。在这个例子中,我们创建了三个复选框,并将它们分组。使用了一个属性 variable
来指定这些复选框的状态变量属性,然后使用 command
属性指定激活时要调用的函数。
import tkinter as tk
def update():
# 更新Label的文本
if var1.get() == 1 and var2.get() == 1 and var3.get() == 1:
label.config(text="全部选中")
else:
label.config(text="未全部选中")
root = tk.Tk()
# 创建变量
var1 = tk.IntVar(value=1)
var2 = tk.IntVar()
var3 = tk.IntVar(value=1)
# 创建Checkbutton并分组
group = tk.LabelFrame(root, text="选项")
c1 = tk.Checkbutton(group, text="选项1", variable=var1, command=update)
c2 = tk.Checkbutton(group, text="选项2", variable=var2, command=update)
c3 = tk.Checkbutton(group, text="选项3", variable=var3, command=update)
# 创建Label
label = tk.Label(root, text="未全部选中")
# 布局
group.pack()
c1.pack(side="left")
c2.pack(side="left")
c3.pack(side="left")
label.pack()
root.mainloop()
这个程序中,我们使用了 IntVar
类来创建一个整型变量,作为各个复选框的状态变量。为了创建一个初始选中状态的复选框,我们可以将变量初始化为1字段(即,var1 = tk.IntVar(value=1))。同时,我们在分组 "选项" 中布置了三个Copybutton。分组使得这三个复选框看起来像一个整体,而不是三个不同的部分。
这个程序还定义了一个 update() 函数,该函数将从所有三个Checkbutton获取值,并根据这个值来更新操作系统中的Label小部件。在这个例子中,如果三个按钮都选中,Label将会显示 "全部选中",否则会显示 "未全部选中"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于Python Tkinter 复选框 ->Checkbutton - Python技术站