本篇 ShengYu 將介紹 Python tkinter Checkbutton 複選框用法與範例,Checkbutton 可以作一些多選項的確認功能,例如代辦清單這種應用。
以下的 Python tkinter Checkbutton 用法與範例將分為這幾部分,
- tkinter Checkbutton 基本用法
- tkinter 設定 Checkbutton 選取或取消選取
- tkinter Checkbutton 綁定事件
那我們開始吧!
tkinter 建立 Checkbutton 的基本用法如下,在建立 tk.Checkbutton
的同時設定 text
屬性,text
屬性就是複選框的顯示文字,設定 variable
或 var
屬性是可以綁定該 Checkbutton 的勾選狀態,例如 mycheckbutton1 綁定這個 var1 變數後,之後 var1.set(True)
就是將 mycheckbutton1 勾選,反之 var1.set(False)
就是將 mycheckbutton1 取消勾選,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.Checkbutton
的 height
屬性來調整,例如:調整 Checkbutton 高度為 2,1
2
3mycheckbutton1 = tk.Checkbutton(root, text='apple',
variable=var1,
height=2)
這邊介紹 tkinter 設定 Checkbutton 選取或取消選取的方法,也可以用來設定 Checkbutton 預設的選擇,建立 Checkbutton 後預設是不選取的狀態,有三種方式可以改變這個狀態,
第一種是使用 Checkbutton.select()
與 Checkbutton.deselect()
,select()
就是勾選,select()
就是取消勾選,
第二種是使用 Checkbutton.toggle()
,toggle()
就是原本勾選的會變成不勾選,再使用一次 toggle()
的話原本不勾選的會變成勾選,範例如下,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
時設定 variable
或 var
屬性,如下例中的 var1 ~ var3,使用 IntVar.set()
設定數值,然後 var1 ~ var3 變數的數值決定會不會勾選該 Checkbutton,範例如下,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 綁定事件函式,你可以將不同的 Checkbutton 分別綁訂不同的事件處理函式,你也可以將不同的 Checkbutton 全部綁訂同一個事件處理函式,如下例所示,在 checkbutton_event()
處理函式裡透過用 IntVar.get()
去取得該 Checkbutton 的勾選狀態,勾選的話會得到 1,沒勾選的話會得到 0,這是當初在建立 tk.Checkbutton
所設定的 onvalue
與 offvalue
屬性的值,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
4checkbutton_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
屬性了,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 按讚支持一下!