Checkbutton 控件是一种供用户选择相应条目的按钮控件,但与 Radiobutton 不同的是,Checkbutton 控件不仅允许用户选择一项,还允许用户同时选择多项,各个选项之间属于并列的关系。复选框控件同样有许多适用场景,比如选择兴趣爱好、选择选修课,以及购买多个物品等,在这种情况下都可以使用复选框控件
语法格式:
Checkbutton(master=None, **options)
复选框控件,除了具有常用的共有属性之外,还具有一些其他重要属性和常用方法
属性 :
text
显示的文本,使用 “\n” 来对文本进行换行。
variable
- 和复选框按钮关联的变量,该变量值会随着用户选择行为来改变(选或不选),即在 onvalue 和 offvalue 设置值之间切换,这些操作由系统自动完成
- 在默认情况下,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()
- 调用 Checkbutton 中 command 选项指定的函数或方法,并返回函数的返回值
- 如果 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()
|