Python 3 – Tkinter Checkbutton
在Tkinter中,我们有一个很常用的控件叫做Checkbutton,顾名思义,它就是一个可以被勾选或不勾选的按钮。Checkbutton常用于设置选项,并且它非常简单易用。
Checkbutton实例
下面我们就来创建一个简单的Checkbutton示例,首先需要导入Tkinter模块。
from tkinter import *
接下来,我们需要创建原始界面并在其中添加Checkbutton。
root = Tk()
c = Checkbutton(root, text="默认勾选")
c.pack()
root.mainloop()
以上代码创建了一个名为root的主窗口,并在其中添加了一个可以勾选的Checkbutton。
如果你运行以上代码,你会看到一个带有“默认勾选”标签的勾选框。
Checkbutton状态
接下来,我们可以从Checkbutton获取它的状态(即是否被勾选),然后做出相应的响应。
root = Tk()
def check():
print("是否勾选:", var.get())
var = IntVar()
c = Checkbutton(root, text="勾选我!", variable=var, command=check)
c.pack()
root.mainloop()
在上面的例子中,我们定义了一个名为check的函数,并使用var.get()获取Checkbutton的状态。然后,我们将这个函数作为command传递给了Checkbutton。这样,当Checkbutton的状态发生变化时,check函数将被调用。
在这个例子中,我们使用了一个名为IntVar的Tkinter变量,并将它作为Checkbutton的variable参数传递给了Checkbutton。这个变量会自动更新,并且可以被用来获取Checkbutton的状态。
代码运行后,你会看到一个带有“勾选我!”标签的勾选框。每次勾选框的状态发生变化时,你都会在控制台看到相应的输出。
Checkbutton样式
在Tkinter中,我们可以轻松地修改Checkbutton的外观。
root = Tk()
c1 = Checkbutton(root, text="默认样式")
c1.pack()
c2 = Checkbutton(root, text="修改样式", activebackground="yellow", activeforeground="red")
c2.pack()
root.mainloop()
在这个例子中,我们创建了两个Checkbutton。第一个使用了默认的样式,而第二个使用了activebackground和activeforeground属性来修改了Checkbutton的选中时和未选中时的颜色。
运行代码后,你会看到两个勾选框,第二个勾选框选中时的背景变为了黄色,前景变为了红色。
Checkbutton组
在一些应用中,我们需要将多个Checkbutton组合在一起,以实现一种选择多项的操作。Tkinter中,我们可以使用Listbox来实现这样的一个组合操作。
root = Tk()
lb = Listbox(root, selectmode=MULTIPLE)
lb.pack()
lb.insert(END, "Option 1")
lb.insert(END, "Option 2")
lb.insert(END, "Option 3")
root.mainloop()
在以上示例中,我们创建了一个名为lb的Listbox,并将它放置在了root窗口中。然后,我们使用insert方法向Listbox中添加三个选项。
在默认情况下,Listbox中的所有选项都是可选的。如果我们想要在Listbox中添加Checkbutton,则需要首先创建一个字典,并使用这个字典来存储每个选项的选中状态。
root = Tk()
selections = {}
lb = Listbox(root, selectmode=MULTIPLE)
lb.pack()
lb.insert(END, "Option 1")
lb.insert(END, "Option 2")
lb.insert(END, "Option 3")
for i in range(lb.size()):
selections[i] = BooleanVar()
Checkbutton(lb, variable=selections[i], onvalue=True, offvalue=False).pack(side=LEFT)
root.mainloop()
在以上示例中,我们首先创建了一个名为selections的字典,并在其中存储每个选项的选中状态。然后,我们遍历了Listbox中的每个选项,并为每个选项创建了一个名为selections[i]的BooleanVar实例,并将其作为variable参数传递给了所有相应的Checkbuttones。
以上代码运行后,你会看到一个具有多个Checkbutton的Listbox。
Checkbutton综合示例
现在,让我们将所有的示例合并在一起,来创建一个复杂的Checkbutton示例。在这个示例中,我们将用Listbox和多个Checkbutton实现选择多项内容。
from tkinter import *
root = Tk()
selections = {}
lb = Listbox(root, selectmode=MULTIPLE)
lb.pack()
lb.insert(END, "Option 1")
lb.insert(END, "Option 2")
lb.insert(END, "Option 3")
for i in range(lb.size()):
selections[i] = BooleanVar()
Checkbutton(lb, variable=selections[i], onvalue=True, offvalue=False).pack(side=LEFT)
def show_selections():
for k, v in selections.items():
print("Option {} is {}".format(k+1, "选中" if v.get() else "未选中"))
Button(root, text="提交", command=show_selections).pack()
root.mainloop()
在以上示例中,我们创建了一个名为show_selections的函数。在这个函数中,我们遍历了selections字典,以检查每个可选项的状态。最后,我们打印出每个选项的状态。
代码运行后,你会看到一个具有多个Checkbutton的Listbox。每次点击“提交”按钮时,控制台都会输出每个选项的状态。
结论
在本文中,我们探讨了Tkinter中的Checkbutton控件。我们展示了如何创建一个Checkbutton,如何获取Checkbutton的状态,如何修改Checkbutton的样式,以及如何利用Checkbutton和Listbox来实现选择多项内容的功能。希望这篇文章能够帮助你更好地了解和使用Checkbutton控件。