TUTORIAL · Tkinter

Tkinter 教程 - 多选按钮

本节教程介绍了 Tkinter checkButton 多选按钮,包括取消、选择按钮以及如何设置多选按钮的默认值等。

本页内容

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()

Tkinter Tutorial Checkbutton 基本示例

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 错误。