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錯誤。