核取按鈕和選項按鈕都是供使用者選取項目,但是選項按鈕具有互斥性,因此只能單選。而核取按鈕每個都是可以獨立挑選,彼此間互不影響允許多選。下圖的「選項」對話方塊,其中有三個核取按鈕,按鈕以方塊呈現,每個方塊都是可以獨立勾選或不勾選。

建立核取按鈕的語法如下:

物件變數 = tkinter.Checkbutton (容器物件, [參數1=值1, 參數2=值2, …])

    
Checkbutton可使用Label提供的參數,下表是Checkbutton所提供常用的參數說明:

參數說明
command核取按鈕狀態改變時會執行 command 所指定的函式。使用方式與按鈕相同。
textvariable代表核取按鈕的文字物件,用來存取核取按鈕上的文字。使用時必須先透過 tkinter 模組的 IntVar()DoubleVar()StringVar()BooleanVar() 方法定義核取按鈕代表文字物件要使用資料型別。使用方式和文字方塊的 textvariable 相同。
variable指定核取按鈕的變數,須先透過 tkinter.BooleanVar() 建立,勾選即表示 True,不勾選表示 False。

如下寫法,餐點核取方塊選項有 ‘牛肉堡餐’、‘豬肉堡餐’ 和 ‘魚排堡餐’ 選項,預設是 ‘豬肉堡餐’ 和 ‘魚排堡餐’ 核取按鈕被勾選。

v1=tkinter.BooleanVar(value=False)
food1=tkinter.Checkbutton(win,text='牛肉堡餐', variable=v1)
v2=tkinter.BooleanVar(value=True)
food2=tkinter.Checkbutton(win,text='豬肉堡餐', variable=v2)
v3=tkinter.BooleanVar(value=True)
food3=tkinter.Checkbutton(win,text='魚排堡餐', variable=v3)

[簡例] (檔名:checkbutton01.py)

建立如下點餐程式。餐點名稱存放在foodAry串列,對應的餐點價錢放在priceAry串列,勾選指定的餐點之後即使用對話方塊顯示所選購的餐點並計算餐點總金額。

foodAry=['牛肉堡餐', '豬肉堡餐', '雞腿堡餐', '香魚堡餐', '招牌堡餐']
priceAry=[120, 110, 130, 90, 150]

[結果]

說明

  1. 4~12行:定義fnOk()函式,此函式內使用迴圈逐一判斷isfoodCheckAry 字典中的每一個元素的值是否為True。若為True即表示該項餐點被勾選,就將餐點名稱合併到data變數,並將餐點價錢累加到total變數,最後使用對話方塊顯示點餐結果。
  2. 25行: 建立isfoodCheckAry空字典用來存放餐點的核取按鈕的狀態。
  3. 26行:建立foodAry串列,串列中的元素用來表示核取按鈕上的文字。
  4. 27行:建立priceAry串列,串列中的元素用來表示餐點核取按鈕對應的價格。
  5. 28~31行:使用迴圈建立各餐點的核取按鈕。
  6. 29行:指定餐點的核取按鈕的值為布林型別。
  7. 33行:按下[確定]即執行4~12行的fnOk()函式。

相關主題與延伸閱讀