说明:多选框控件,用于在程序中提供多项选择框,但是处理“多选一”的问题,还是交给 Radiobutton 或 Listbox 组件来实现吧。
用法:使用 Checkbutton,你必须创建一个 Tkinter 变量用于存放按钮的状态:
from tkinter import * root = Tk() v1 = IntVar() #用来表示按钮是否选中 v2 = IntVar() c1 = Checkbutton(root,text='python',variable=v1) c2 = Checkbutton(root,text='java',variable=v2) c1.pack() c2.pack() mainloop()
结果 :
用法:默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0。你可以使用 onvalue 和 offvalue 选项修改它们的值,例如下边代码,只要 var 被设置为“T”即选中状态, 设置为“F”则相反。
from tkinter import * root = Tk() v = IntVar() v.set('T') c = Checkbutton(root,text = '测试',variable = v,onvalue='T',offvalue='F') c.pack() l = Label(root,textvariable = v) l.pack() mainloop()
结果:
用法:如果选项多的话可以用列表,代码如下:
from tkinter import * root = Tk()
GIRLS = ['西施','貂蝉','王昭君','杨玉环'] v = [] for girl in GIRLS: v.append(IntVar()) #这里注意 IntVar() b = Checkbutton(root,text=girl,variable=v[-1]) #这里注意 variable[-1] b.pack(anchor=W) #这个是左对齐 mainloop()
把Checkbutton组件都向左对齐,可以设置pick()方法的anchor选项,
anchor选项指定显示的位置,有 N,S,W,E,等组成。
结果:
说明:单选按钮控件,显示一个单选的按钮状态,需要设置不同的value值。
from tkinter import * root = Tk() LANGS = [ ('python',1), ('perl',2), ('c',3), ('java',4)] v = IntVar() #这里注意 v.set(1) #默认是选第一个 for lang,num in LANGS: b = Radiobutton(root,text=lang,variable=v,value=num) b.pack(anchor=W) mainloop()
结果:
如果不喜欢前面的小圆圈,还可以去掉前面的小圆圈,将indicatoron设置为False就可以去掉前面的小圆圈。
b = Radiobutton(root,text=lang,variable=v,value=num,indicatoron=False) b.pack(fill=X) #横向填充
说明:labelframe 是一个简单的容器控件,常用与复杂的窗口布局。
from tkinter import * root = Tk() group = LabelFrame(root,text="最好的脚本语言?",padx=5,pady=5) group.pack(padx=10,pady=10) LANGS=[ ('python',1), ('java',2), ('c',3)] v = IntVar() v.set(1) for long,num in LANGS: b = Radiobutton(group,text=long,variable=v,value=num) b.pack(anchor=W) mainloop()
结果: