在本文中,將介紹 tkinter Checkbox 復(fù)選框小部件以及如何有效地使用它。
復(fù)選框是一個(gè)允許選中和取消選中的小部件。復(fù)選框可以保存一個(gè)值,通常,當(dāng)希望讓用戶在兩個(gè)值之間進(jìn)行選擇時(shí),可以使用復(fù)選框。
要?jiǎng)?chuàng)建復(fù)選框,請(qǐng)使用如下構(gòu)造函數(shù)。
checkbox = tk.Checkbutton(master,
text='<checkbox label>',
command=check_changed,
variable=checkbox_var,
onvalue='<value_when_checked>',
offvalue='<value_when_unchecked>')
text 參數(shù):指定復(fù)選框的顯示標(biāo)簽。
command 參數(shù):選中或取消選中復(fù)選框時(shí)調(diào)用的命令。
variable 參數(shù):保存復(fù)選框當(dāng)前值的變量。選中復(fù)選框,則變量的值為 1。否則為 0。
onvalue、offvalue 參數(shù):指定 variable 變量 0 和 1 以外的其他值。
import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Checkbutton 復(fù)選框演示')
# 創(chuàng)建變量,保存復(fù)選框的值
agr = tk.StringVar()
# 定義函數(shù),復(fù)選框狀態(tài)發(fā)生變化就調(diào)用該函數(shù)
def agr_changed():
tk.messagebox.showinfo(title='是否同意', message=agr.get())
# 創(chuàng)建復(fù)選框
checkbox = tk.Checkbutton(root,
text='是否同意',
command=agr_changed,
variable=agr,
onvalue='同意',
offvalue='不同意')
checkbox.pack()
root.mainloop()
以下示例使用 indicatoron=0 選項(xiàng)取消復(fù)選框前面的小方塊,取消復(fù)選框的 Text 并顯示圖像。
import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Checkbutton 復(fù)選框演示')
frame = tk.LabelFrame(root, text='請(qǐng)選擇', padx=30, pady=10)
frame.pack(padx=100, pady=100)
checked_image = tk.PhotoImage(file="logo.png")
unchecked_image = tk.PhotoImage(file="logo2.png")
checkbutton_1 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_1.pack(side=tk.LEFT)
checkbutton_2 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_2.pack(side=tk.LEFT)
checkbutton_3 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_3.pack(side=tk.LEFT)
checkbutton_4 = tk.Checkbutton(frame, indicatoron=0, overrelief="sunken", image=unchecked_image, selectimage=checked_image)
checkbutton_4.pack(side=tk.LEFT)
root.mainloop()
Checkbox 復(fù)選框選項(xiàng)
方法 | 說明 |
---|
deselect() | 取消復(fù)選框選擇。 |
select() | 選擇復(fù)選框。 |
toggle() | 選擇和取消選擇之間切換。 |
以下示例設(shè)置兩個(gè)按鈕,利用 deselect() 和 select() 方法,全選和取消全選所有復(fù)選框。
import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Checkbutton 復(fù)選框演示')
def clear_selection():
cb1.deselect()
cb2.deselect()
cb3.deselect()
cb4.deselect()
cb5.deselect()
cb6.deselect()
def selection():
cb1.select()
cb2.select()
cb3.select()
cb4.select()
cb5.select()
cb6.select()
var1 = tk.BooleanVar()
var2 = tk.BooleanVar()
var3 = tk.BooleanVar()
var4 = tk.BooleanVar()
var5 = tk.BooleanVar()
var6 = tk.BooleanVar()
frame1 = tk.LabelFrame(root, text='Group 1', padx=30, pady=10)
frame1.pack(side=tk.LEFT, padx=50)
frame2 = tk.LabelFrame(root, text='Group 2', padx=30, pady=10)
frame2.pack(side=tk.RIGHT, padx=50)
cb1 = tk.Checkbutton(frame1, text='Number 1', variable=var1)
cb1.pack()
cb2 = tk.Checkbutton(frame1, text='Number 2', variable=var2)
cb2.pack()
cb3 = tk.Checkbutton(frame1, text='Number 3', variable=var3)
cb3.pack()
cb4 = tk.Checkbutton(frame2, text='Number 4', variable=var4)
cb4.pack()
cb5 = tk.Checkbutton(frame2, text='Number 5', variable=var5)
cb5.pack()
cb6 = tk.Checkbutton(frame2, text='Number 6', variable=var6)
cb6.pack()
button1 = tk.Button(root, text='Unselect all', command=clear_selection)
button1.pack()
button2 = tk.Button(root, text='Select All', command=selection)
button2.pack()
root.mainloop()
Checkbox 復(fù)選框選項(xiàng)
選項(xiàng) | 說明 |
---|
master | 指定復(fù)選框的父級(jí)窗口或框架。 |
variable | 保存復(fù)選框當(dāng)前值的變量,用于存儲(chǔ)復(fù)選框的選中狀態(tài)。 |
onvalue | 指定當(dāng)復(fù)選框被選中時(shí),variable變量的值。 |
offvalue | 指定當(dāng)復(fù)選框未被選中時(shí),variable變量的值。 |
command | 指定一個(gè)函數(shù),當(dāng)復(fù)選框的狀態(tài)改變時(shí),該函數(shù)將被調(diào)用。 |
text | 指定復(fù)選框旁邊顯示的文本。 |
image | 指定一個(gè)圖像對(duì)象,顯示在復(fù)選框旁邊。 |
compound | 指定圖像和文本的對(duì)齊方式,如TOP, BOTTOM, LEFT, RIGHT。 |
invcmd | 指定一個(gè)函數(shù),當(dāng)復(fù)選框的狀態(tài)改變時(shí),如果command指定的函數(shù)返回False,則調(diào)用此函數(shù)。 |
selectcolor | 指定復(fù)選框被選中時(shí)的背景顏色。 |
height | 指定復(fù)選框的高度(通常用于顯示圖像)。 |
width | 指定復(fù)選框的寬度(通常用于顯示文本)。 |
anchor | 指定文本的對(duì)齊方式,如W(西), E(東), N(北), S(南), CENTER。 |
justify | 指定文本的對(duì)齊方式,如LEFT, RIGHT, CENTER。 |
padx | 指定復(fù)選框與其文本之間的水平填充。 |
pady | 指定復(fù)選框與其文本之間的垂直填充。 |
indicatoron | 是否繪制前邊作為選擇的小方塊,設(shè)置為0,可以將整個(gè)小部件變成復(fù)選框。 |