Tkinter Checkbutton复选框
Checkboxes可以翻译为复选框,它在Widget控件中的类别名称是Checkbutton。复选框在屏幕上显示为一个方框,它与选项按钮最大的差别在于它是复选。在设计复选框时,最常见的方式是让复选框以文字形式存在。与标签一样,也可以设计含有图像的复选框。
程序设计时可以设计让每个复选框与函数(或称方法)绑在一起,当此选项被选择时,可以自动执行相关的函数或方法。另外,程序设计时可能会有多组复选框,此时可以设计一组复选框有一个相关的变量,由此变量绑定这组复选框。
可以使用Checkbutton( )方法建立复选框,它的使用方法如下。
Checkbutton(master, options, ...)
Checkbutton( )方法的第一个参数是父对象,表示这个复选框将建立在哪一个父对象内。下列是Checkbutton( )方法内其他常用的options参数。
(1)activebackground
:鼠标光标在复选框上时的背景颜色。
(2)activeforeground
:鼠标光标在复选框上时的前景颜色。
(3)bg
:标签背景或indicator的背景颜色。
(4)bitmap
:位图图像对象。
(5)borderwidth or bd
:边界宽度默认是两个像素。
(6)command
:当用户更改选项时,会自动执行此函数。
(7)cursor
:当鼠标光标在复选框上时的光标形状。
(8)disabledforeground
:当无法操作时的颜色。
(9)font
:字形。
(10)height
:复选框中的文字有几行,默认是1行。
(11)highlightbackground
:当复选框取得焦点时的背景颜色。
(12)highlightcolor
:当复选框取得焦点时的颜色。
(13)image
:图像对象,如果要建立含图像的选项按钮时,可以使用此参数。
(14)justify
:当含多行文字时,最后一行文字的对齐方式。
(15)offvalue
:这是控制变量,默认若复选框未选取值是0,可以由此更改设置此值。
(16)onvalue
:这是控制变量,默认若复选框未选取值是1,可以由此更改设置此值。
(17)padx
:默认是1,可设置复选框与文字的间隔。
(18)pady
:默认是1,可设置复选框的上下间距。
(19)relief
:默认是relief=FLAT,可由此控制复选框外框。
(20)selectcolor
:当复选框被选取时的颜色。
(21)selectimage
:如果设置图像复选框,可由此设置当复选框被选取时的不同图像。
(22)state
:默认是state=NORMAL,若是设置DISABLED则以灰阶显示复选框,表示暂时无法使用。如果鼠标光标在复选框上方表示ACTIVE。
(23)text
:复选框旁的文字。
(24)underline
:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
(25)variable
:设置或取得目前选取的复选框,它的值类型通常是IntVar或StringVar。
(26)width
:复选框的文字有几个字符宽,省略时会自行调整为实际宽度。
(27)wraplength
:限制每行的文字数,默认是0,表示只有“\n”才会换行。
Tkinter Checkbutton复选框 示例1
建立复选框的应用。
from tkinter import *
root = Tk()
root.title("apidemos.com")
lab = Label(root,text="请选择喜欢的运动",fg="blue",bg="lightyellow",width=30)
lab.grid(row=0)
var1 = IntVar()
cbtnNFL = Checkbutton(root,text="美式足球",variable=var1)
cbtnNFL.grid(row=1,sticky=W) # 左对齐
var2 = IntVar()
cbtnMLB = Checkbutton(root,text="棒球",variable=var2)
cbtnMLB.grid(row=2,sticky=W) # 左对齐
var3 = IntVar()
cbtnNBA = Checkbutton(root,text="篮球",variable=var3)
cbtnNBA.grid(row=3,sticky=W) # 左对齐
root.mainloop()
输出:
如果复选框中项目不多,可以参考上述实例使用Checkbutton( )方法一步一步建立复选框的项目。如果项目很多,可以将项目组织成字典,然后使用循环建立复选框,可参考下列实例。
Tkinter Checkbutton复选框 示例2
以sports字典方式存储运动复选框项目,然后建立此复选框,当有选择项目时,若是单击“确定”按钮,可以在Python Shell窗口中列出所选的项目。
from tkinter import *
def printInfo():
selection = ""
# print("before iteration:")
# print(selection)
for i in checkboxes.keys(): # 检查此字典的关键字,同: for i in checkboxes:
if checkboxes[i].get() == True: # 若被选中则执行
selection = selection + sports[i] + "\t"
# print(selection)
# print("after iteration:")
print(selection)
root = Tk()
root.title("apidemos.com") # 窗口标题
label = Label(root,text="请选择喜欢的运动",fg="blue",bg="lightyellow",width=30)
label.grid(row=0)
sports = {0:"美式足球",1:"棒球",2:"篮球",3:"网球",4:"足球",5:"游泳"} # sports字典是存储运动项目的复选框。
checkboxes = {} # checkboxes字典则是存储选项是否被选取。
for i in range(len(sports)): # 循环将sports字典内容转成复选框。
checkboxes[i] = BooleanVar() # 将checkboxes内容设为BooleanVar对象,经过这样设置后才可以用get()方法取得它的内容。
Checkbutton(root,text=sports[i],
variable=checkboxes[i]).grid(row=i+1,sticky=W)
btn = Button(root,text="确定",width=10,command=printInfo) #创建“确定”按钮,当单击此按钮时会执行printInfo( )函数,这个函数主要是将被选取的项目打印出来。
btn.grid(row=i+2)
# btn.grid()
root.mainloop()
输出:
上述右图中若是单击“确定”按钮,可以在Python Shell窗口中看到下列结果。