Tkinter 教程 多选按钮
Checkbutton
多选按钮控件是一个包含多个可选项的控件。多选按钮可以包含文本或图像。它还可以绑定单击多选按钮时要调用的回调函数。
要在现有父窗口中创建一个 Checkbutton 窗口控件,请使用
tk.Checkbutton(parent, option, ...)
Tkinter Checkbutton 基本示例
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()
chkValue = tk.BooleanVar()
每个多选按钮都应与变量相关联。选择/取消选择时,变量的数据类型由多选按钮来确定。
chkValue.set(True)
它设置了多选按钮的原始值。因为它只是赋予为 Boolean 数据类型,所以这里只有两个选项,True 或 False。
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue)
现在,这里新建了一个 Checkbutton 实例,并且使用我们在上面创建的变量 chkValue。
chkExample.grid(column=0, row=0)
除了在 Tkinter 标签部分中引入的 pack,grid 是另一种类型的 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() 方法切换。
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 控件用于选择状态,它还可以在选择/取消选择或更直接,切换时将回调函数绑定到事件。每当切换多选按钮状态时,都会触发回调函数。
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 默认值及其关联的数据类型更改为其他值和/或数据类型。
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")
onvalue
和 offvalue
是更改所选和未选状态值的选项。它们可以有数据类型,如 Int,String,Float 或其他。
注意
跟 Checkbutton 多选按钮相关联的 Tkinter 数据类型应该跟它的 onvalue 和 offvalue 的数据类型相同。否则就会有_tkinter.TclError
错误。