Python 3 – Tkinter Checkbutton

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控件。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程