Tkinter多选按钮

Checkbutton多选按钮控件是一个包含多个可选项的控件。多选按钮可以包含文本或图像。它还可以绑定单击多选按钮时要调用的回调函数。

要在现有父窗口中创建一个Checkbutton窗口控件,请使用

tk.Checkbutton(parent, option, ...)

Tkinter Checkbutton基本示例

Tkinter CheckButton_Basic.py
import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)
 
app.mainloop()

Tkinter Tutorial Checkbutton基本示例

chkValue = tk.BooleanVar() 

每个多选按钮都应与变量相关联。选择/取消选择时,变量的数据类型由多选按钮来确定。

chkValue.set(True)

它设置了多选按钮的原始值。因为它只是赋予为Boolean数据类型,所以这里只有两个选项,TrueFalse

chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 

现在,这里新建了一个Checkbutton实例,并且使用我们在上面创建的变量chkValue

chkExample.grid(column=0, row=0)

除了在Tkinter标签部分中引入的packgrid是另一种类型的Tkinter布局管理器。

Tkinter有三个布局管理器,

  • pack - 打包
  • grid - 网格
  • place - 放置

我们将在本教程的后半部分介绍这些布局/几何管理器。

Tkinter Checkbutton选择/取消选择

用户可以单击GUI中的多选按钮来选择或取消选择按钮。你也可以使用select()deselect()方法选择或取消选中Checkbutton

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.select()
print "The checkbutton value when deselected is {}".format(chkValue.get())
The checkbutton value when selected is True
The checkbutton value when deselected is False

这里,Checkbutton的值是通过get()方法获得的。

Tkinter Checkbutton多选按钮状态切换

多选按钮的状态可以通过select()deselect()修改,也可以使用toggle()方法切换。

Tkinter CheckButton_Select_Deselect.py
import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)


print "The checkbutton original value is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled twice is {}".format(chkValue.get())

app.mainloop()
The checkbutton original value is True
The checkbutton value after toggled is False
The checkbutton value after toggled twice is True

Tkinter Checkbutton回调函数绑定

Checkbutton控件用于选择状态,它还可以在选择/取消选择或更直接,切换时将回调函数绑定到事件。每当切换多选按钮状态时,都会触发回调函数。

Tkinter CheckButton_CallBack.py
import tkinter as tk
from _cffi_backend import callback
 
def callBackFunc():
    print "Oh. I'm clicked"
    
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', 
                            var=chkValue, command=callBackFunc) 
chkExample.grid(column=0, row=0)

app.mainloop()

每当你按下按钮时,你都会看到它在console中打印出了Oh. I'm clicked

Checkbutton类中的选项command用于在按下按钮时绑定回调函数或方法。

更改Tkinter Checkbutton多选按钮默认值

与未选中的Checkbutton对应的默认值为0,并且所选的Checkbutton的默认值为1.你还可以将Checkbutton默认值及其关联的数据类型更改为其他值和/或数据类型。

Tkinter CheckButton_Select_OnValue_OffValue.py
import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.StringVar() 
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue,
                            onvalue="RGB", offvalue="YCbCr") 
chkExample.grid(column=0, row=0)

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.deselect()
print "The checkbutton value when deselected is {}".format(chkValue.get())

app.mainloop()

The checkbutton value when selected is RGB
The checkbutton value when deselected is YCbCr
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue,
                            onvalue="RGB", offvalue="YCbCr") 

onvalueoffvalue是更改所选和未选状态值的选项。它们可以有数据类型,如IntStringFloat或其他。

注意
Checkbutton多选按钮相关联的Tkinter数据类型应该跟它的onvalueoffvalue的数据类型相同。否则就会有_tkinter.TclError错误。