Checkbutton复选框控件

Checkbutton 控件是一种供用户选择相应条目的按钮控件,但与 Radiobutton 不同的是,Checkbutton 控件不仅允许用户选择一项,还允许用户同时选择多项,各个选项之间属于并列的关系。复选框控件同样有许多适用场景,比如选择兴趣爱好、选择选修课,以及购买多个物品等,在这种情况下都可以使用复选框控件
语法格式:

Checkbutton(master=None, **options)

复选框控件,除了具有常用的共有属性之外,还具有一些其他重要属性和常用方法
属性 :
text
显示的文本,使用 “\n” 来对文本进行换行。

variable

  1. 和复选框按钮关联的变量,该变量值会随着用户选择行为来改变(选或不选),即在 onvalue 和 offvalue 设置值之间切换,这些操作由系统自动完成
  2. 在默认情况下,variable 选项设置为 1 表示选中状态,反之则为 0,表示不选中。

onvalue通过设置 onvalue 的值来自定义选中状态的值。offvalue通过设置 offvalue 的值来自定义未选中状态的值。

indicatoron
默认为 True,表示是否绘制用来选择的选项的小方块,当设置为 False 时,会改变原有按钮的样式,与单选按钮相同

selectcolor
选择框的颜色(即小方块的颜色),默认由系统指定

selectimage
设置当 Checkbutton 为选中状态的时候显示的图片,若如果没有指定 image 选项,该选项被忽略

textvariableCheckbutton
显示 Tkinter 变量(通常是一个 StringVar 变量)的内容,如果变量被修改,Checkbutton 的文本会自动更新

wraplength
表示复选框文本应该被分成多少行,该选项指定每行的长度,单位是屏幕单元,默认值为 0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import tkinter as tk
from typing_extensions import IntVar
root= tk.Tk()
root.geometry("400x400+300+300")
CheckVar1 = tk.IntVar()
CheckVar2 = tk.IntVar()
CheckVar3 = tk.IntVar()
check1 = tk.Checkbutton(root, text="Python",variable = CheckVar1,onvalue=1,offvalue=0)
check2 = tk.Checkbutton(root, text="C语言",variable = CheckVar2,onvalue=1,offvalue=0)
check3 = tk.Checkbutton(root, text="Java",variable = CheckVar3,onvalue=1,offvalue=0)
check1.pack(side=tk.LEFT)
check2.pack(side=tk.LEFT)
check3.pack(side=tk.LEFT)
check1.select()
root.mainloop()

复杂版 – 嘿嘿

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
36
from tkinter import *
win = Tk()
win.geometry('500x200')
win.resizable(0,0)
lb = Label(text='C语言',font=('微软雅黑', 18,'bold'),fg='#CD7054')
lb.pack()
# 新建整型变量
CheckVar1 = IntVar()
CheckVar2 = IntVar()
CheckVar3 = IntVar()
# 设置三个复选框控件,使用variable参数来接收变量
check1 = Checkbutton(win, text="Python",variable = CheckVar1,onvalue=1,offvalue=0)
check2 = Checkbutton(win, text="C语言",variable = CheckVar2,onvalue=1,offvalue=0)
check3 = Checkbutton(win, text="Java",variable = CheckVar3,onvalue=1,offvalue=0)
# 选择第一个为默认选项
check1.select ()
check1.pack (side = LEFT)
check2.pack (side = LEFT)
check3.pack (side = LEFT)
def study():
#没有选择任何项目的情况下
if (CheckVar1.get() == 0 and CheckVar2.get() == 0 and CheckVar3.get() == 0):
s = '您还没选择任语言'
else:
s1 = "Python" if CheckVar1.get() == 1 else ""
s2 = "C语言" if CheckVar2.get() == 1 else ""
s3 = "Java" if CheckVar3.get() == 1 else ""
s = "您选择了%s %s %s" % (s1, s2, s3)
#设置标签lb2的字体
lb2.config(text=s)
btn = Button(win,text="选好了",bg='#BEBEBE',command=study)
btn.pack(side = LEFT)
# 该标签,用来显示选择的文本
lb2 = Label(win,text='',bg ='#9BCD9B',font=('微软雅黑',11,'bold'),width = 5,height=2)
lb2.pack(side = BOTTOM, fill = X)
win.mainloop()

复选框控件提供以下常用方法

desellect()
取消 Checkbutton 组件的选中状态,也就是设置 variable 为 offvalue

flash()
刷新 Checkbutton 组件,对其进行重绘操作,即将前景色与背景色互换从而产生闪烁的效果。

invoke()

  1. 调用 Checkbutton 中 command 选项指定的函数或方法,并返回函数的返回值
  2. 如果 Checkbutton 的state(状态)”disabled”是 (不可用)或没有指定 command 选项,则该方法无效

select()
将 Checkbutton 组件设置为选中状态,也就是设置 variable 为 onvalue

toggle()
改变复选框的状态,如果复选框现在状态是 on,就改成 off,反之亦然

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from tkinter import *
win = Tk()
win.geometry('500x200')
win.resizable(0,0)
lb = Label(text='漂亮鬼',font=('微软雅黑', 18,'bold'),fg='#CD7054')
lb.pack()
# 设置三个复选框控件
check1 = Checkbutton(win, text="Python",font=('微软雅黑', 15,'bold'),onvalue=1,offvalue=0)
check2 = Checkbutton(win, text="C语言",font=('微软雅黑', 15,'bold'),onvalue=1,offvalue=0)
check3 = Checkbutton(win, text="Java",font=('微软雅黑', 15,'bold'),onvalue=1,offvalue=0)
# 将第一个 复选框按钮的 variable值,设置为 onvalue =1 ,表示选中状态
check1.select ()
check2.select ()
# 取消了第一个复选框的选中状态
check1.toggle()
check1.pack (side = LEFT)
check2.pack (side = LEFT)
check3.pack (side = LEFT)
win.mainloop()