Python tkinter Checkbutton 複選框用法與範例

本篇 ShengYu 將介紹 Python tkinter Checkbutton 複選框用法與範例,Checkbutton 可以作一些多選項的確認功能,例如代辦清單這種應用。

以下的 Python tkinter Checkbutton 用法與範例將分為這幾部分,

  • tkinter Checkbutton 基本用法
  • tkinter 設定 Checkbutton 選取或取消選取
  • tkinter Checkbutton 綁定事件

那我們開始吧!

tkinter Checkbutton 基本用法

tkinter 建立 Checkbutton 的基本用法如下,在建立 tk.Checkbutton 的同時設定 text 屬性,text 屬性就是複選框的顯示文字,設定 variablevar 屬性是可以綁定該 Checkbutton 的勾選狀態,例如 mycheckbutton1 綁定這個 var1 變數後,之後 var1.set(True) 就是將 mycheckbutton1 勾選,反之 var1.set(False) 就是將 mycheckbutton1 取消勾選,

python3-checkbutton.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('200x150')

var1 = tk.BooleanVar()
var2 = tk.BooleanVar()
var3 = tk.BooleanVar()

mycheckbutton1 = tk.Checkbutton(root, text='apple',
var=var1)
mycheckbutton1.pack()
mycheckbutton2 = tk.Checkbutton(root, text='banana',
var=var2)
mycheckbutton2.pack()
mycheckbutton3 = tk.Checkbutton(root, text='orange',
var=var3)
mycheckbutton3.pack()

var1.set(True)

root.mainloop()

結果圖如下,

如果覺得 Checkbutton 上下間距太小的話,你可以透過設定 tk.Checkbuttonheight 屬性來調整,例如:調整 Checkbutton 高度為 2,

1
2
3
mycheckbutton1 = tk.Checkbutton(root, text='apple',
variable=var1,
height=2)

tkinter 設定 Checkbutton 選取或取消選取

這邊介紹 tkinter 設定 Checkbutton 選取或取消選取的方法,也可以用來設定 Checkbutton 預設的選擇,建立 Checkbutton 後預設是不選取的狀態,有三種方式可以改變這個狀態,

第一種是使用 Checkbutton.select()Checkbutton.deselect()select() 就是勾選,select() 就是取消勾選,

第二種是使用 Checkbutton.toggle()toggle() 就是原本勾選的會變成不勾選,再使用一次 toggle() 的話原本不勾選的會變成勾選,範例如下,

python3-checkbutton2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('200x150')

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

mycheckbutton1 = tk.Checkbutton(root, text='apple',
variable=var1,
onvalue=1, offvalue=0)
mycheckbutton1.pack()
mycheckbutton2 = tk.Checkbutton(root, text='banana',
variable=var2,
onvalue=1, offvalue=0)
mycheckbutton2.pack()
mycheckbutton3 = tk.Checkbutton(root, text='orange',
variable=var3,
onvalue=1, offvalue=0)
mycheckbutton3.pack()

mycheckbutton1.select()
mycheckbutton1.deselect()
mycheckbutton2.select()
mycheckbutton3.toggle()

root.mainloop()

結果圖如下,

第三種是在建立 tk.Checkbutton 時設定 variablevar 屬性,如下例中的 var1 ~ var3,使用 IntVar.set() 設定數值,然後 var1 ~ var3 變數的數值決定會不會勾選該 Checkbutton,範例如下,

python3-checkbutton3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
root.geometry('200x150')

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

mycheckbutton1 = tk.Checkbutton(root, text='apple',
variable=var1,
onvalue=1, offvalue=0)
mycheckbutton1.pack()
mycheckbutton2 = tk.Checkbutton(root, text='banana',
variable=var2,
onvalue=1, offvalue=0)
mycheckbutton2.pack()
mycheckbutton3 = tk.Checkbutton(root, text='orange',
variable=var3,
onvalue=1, offvalue=0)
mycheckbutton3.pack()

var2.set(1)

root.mainloop()

例如 var2.set(1) 就是勾選 mycheckbutton2,

tkinter Checkbutton 綁定事件

這邊介紹 tkinter Checkbutton 綁定事件函式,你可以將不同的 Checkbutton 分別綁訂不同的事件處理函式,你也可以將不同的 Checkbutton 全部綁訂同一個事件處理函式,如下例所示,在 checkbutton_event() 處理函式裡透過用 IntVar.get() 去取得該 Checkbutton 的勾選狀態,勾選的話會得到 1,沒勾選的話會得到 0,這是當初在建立 tk.Checkbutton 所設定的 onvalueoffvalue 屬性的值,

python3-checkbutton4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk

def checkbutton_event():
print('checkbutton_event: ' + str(var1.get()) + ' '
+ str(var2.get()) + ' ' + str(var3.get()))

root = tk.Tk()
root.title('my window')
root.geometry('200x150')

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

mycheckbutton1 = tk.Checkbutton(root, text='apple',
variable=var1,
onvalue=1, offvalue=0,
command=checkbutton_event)
mycheckbutton1.pack()
mycheckbutton2 = tk.Checkbutton(root, text='banana',
variable=var2,
onvalue=1, offvalue=0,
command=checkbutton_event)
mycheckbutton2.pack()
mycheckbutton3 = tk.Checkbutton(root, text='orange',
variable=var3,
onvalue=1, offvalue=0,
command=checkbutton_event)
mycheckbutton3.pack()

var1.set(1)

root.mainloop()

程式啟動後,取消勾選 apple,之後又勾選了 banana、orange、apple,程式輸出如下,

1
2
3
4
checkbutton_event: 0 0 0
checkbutton_event: 0 1 0
checkbutton_event: 0 1 1
checkbutton_event: 1 1 1

結果圖如下,

在事件處理函式裡除了了解如何取得 Checkbutton 有無勾選外,有時也想要取得該 Checkbutton 顯示的文字,如下例所示,在 Checkbutton 綁訂事件函式時使用 lambda 運算式,將原本的 Checkbutton 變數傳遞進去,這樣我們在事件處理函式裡就可以取得該 Checkbutton 的 text 屬性了,

python3-checkbutton5.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk

def checkbutton_event(widget):
print('checkbutton_event: ' + widget['text'])

root = tk.Tk()
root.title('my window')
root.geometry('200x150')

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

mycheckbutton1 = tk.Checkbutton(root, text='apple',
variable=var1,
onvalue=1, offvalue=0,
command=lambda: checkbutton_event(mycheckbutton1))
mycheckbutton1.pack()
mycheckbutton2 = tk.Checkbutton(root, text='banana',
variable=var2,
onvalue=1, offvalue=0,
command=lambda: checkbutton_event(mycheckbutton2))
mycheckbutton2.pack()
mycheckbutton3 = tk.Checkbutton(root, text='orange',
variable=var3,
onvalue=1, offvalue=0,
command=lambda: checkbutton_event(mycheckbutton3))
mycheckbutton3.pack()

var1.set(1)

root.mainloop()

結果圖如下,

程式輸出如下,

1
checkbutton_event: banana

以上就是 Python tkinter Checkbutton 複選框用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
Python 新手入門教學懶人包
Python tkinter 新手入門教學