在本文中,将介绍 tkinter Checkbox 复选框小部件以及如何有效地使用它。
复选框是一个允许选中和取消选中的小部件。复选框可以保存一个值,通常,当希望让用户在两个值之间进行选择时,可以使用复选框。
要创建复选框,请使用如下构造函数。
checkbox = tk.Checkbutton(master, text='<checkbox label>', command=check_changed, variable=checkbox_var, onvalue='<value_when_checked>', offvalue='<value_when_unchecked>')text 参数:指定复选框的显示标签。command 参数:选中或取消选中复选框时调用的命令。variable 参数:保存复选框当前值的变量。选中复选框,则变量的值为 1。否则为 0。onvalue、offvalue 参数:指定 variable 变量 0 和 1 以外的其他值。import tkinter as tkfrom tkinter.messagebox import showinforoot = tk.Tk()root.geometry('600x400+200+200')root.title('Checkbutton 复选框演示')# 创建变量,保存复选框的值agr = tk.StringVar()# 定义函数,复选框状态发生变化就调用该函数def agr_changed(): tk.messagebox.showinfo(title='是否同意', message=agr.get())# 创建复选框checkbox = tk.Checkbutton(root, text='是否同意', command=agr_changed, variable=agr, onvalue='同意', offvalue='不同意')checkbox.pack()root.mainloop()以下示例使用 indicatoron=0 选项取消复选框前面的小方块,取消复选框的 Text 并显示图像。
import tkinter as tkfrom tkinter.messagebox import showinforoot = tk.Tk()root.geometry('600x400+200+200')root.title('Checkbutton 复选框演示')frame = tk.LabelFrame(root, text='请选择', 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 复选框选项
方法
说明
deselect()
取消复选框选择。
select()
选择复选框。
toggle()
选择和取消选择之间切换。
以下示例设置两个按钮,利用 deselect() 和 select() 方法,全选和取消全选所有复选框。
import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('Checkbutton 复选框演示')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 复选框选项
选项
说明
master
指定复选框的父级窗口或框架。
variable
保存复选框当前值的变量,用于存储复选框的选中状态。
onvalue
指定当复选框被选中时,variable变量的值。
offvalue
指定当复选框未被选中时,variable变量的值。
command
指定一个函数,当复选框的状态改变时,该函数将被调用。
text
指定复选框旁边显示的文本。
image
指定一个图像对象,显示在复选框旁边。
compound
指定图像和文本的对齐方式,如TOP, BOTTOM, LEFT, RIGHT。
invcmd
指定一个函数,当复选框的状态改变时,如果command指定的函数返回False,则调用此函数。
selectcolor
指定复选框被选中时的背景颜色。
height
指定复选框的高度(通常用于显示图像)。
width
指定复选框的宽度(通常用于显示文本)。
anchor
指定文本的对齐方式,如W(西), E(东), N(北), S(南), CENTER。
justify
指定文本的对齐方式,如LEFT, RIGHT, CENTER。
padx
指定复选框与其文本之间的水平填充。
pady
指定复选框与其文本之间的垂直填充。
indicatoron
是否绘制前边作为选择的小方块,设置为0,可以将整个小部件变成复选框。