The Tkinter Checkbutton Widget
Checkbutton(多选按钮)组件用于实现确定是否选择的按钮。Checkbutton 组件可以包含文本或图像,你可以将一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。
Checkbutton 组件仅能显示单一字体的文本,但文本可以跨越多行。另外,还可以为其中的个别字符加上下划线(例如用于表示键盘快捷键)。默认情况下,tab 按键被用于在按钮间切换。
何时使用 Checkbutton 组件?
Checkbutton 组件被用于作为二选一的按钮(通常为选择“开”或“关”的状态),当你希望表达“多选多”选项的时候,可以将一系列Checkbutton 组合起来使用。
但是处理“多选一”的问题,还是交给 Radiobutton 或Listbox 组件来实现吧。
用法
(参考 Button 组件的用法)
使用Checkbutton,你必须创建一个 Tkinter 变量用于存放按钮的状态:
1. from Tkinter import *
2.
3. master = Tk()
4.
5. var = IntVar()
6.
7. c = Checkbutton(master, text="我是帅锅", variable=var)
8. c.pack()
9.
10. mainloop()
默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0。你可以使用 onvalue 和offvalue 选项修改它们的值,例如下边代码,只要 var 被设置为“T”即选中状态,设置为“F”则相反:
1. var = StringVar()
2. var.set("T")
3. c = Checkbutton(master, text="你有女朋友吗?",variable=var, onvalue="T", offvalue="F")
果你需要同时跟踪 variable 选项以及 Checkbutton 组件对象,你不妨可以试试将两者结合起来(下边在 CheckButton 组件对象中新建一个 var 变量,存放 variable 的值 v):
1. v = IntVar()
2. c = Checkbutton(master, text="加特技", variable=v)
3. c.var = v
如果你的 Tkinter 代码是放在类中的(在实际编程中你就应该这么干),那么将variable 选项的值作为属性存储可能是更好的选择:
1. def __init__(self, master):
2. self.var = IntVar()
3. c = Checkbutton(master,text="DUANG~", variable=self.var, command=self.cb)
4. c.pack()
5.
6. def cb(self, event):
7. print "variableis", self.var.get()
参数
Checkbutton(master=None, **options) (class)
master -- 父组件
**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
activebackground | 1. 设置当 Checkbutton 处于活动状态(通过 state 选项设置状态)的背景色 |
activeforeground | 1. 设置当 Checkbutton 处于活动状态(通过 state 选项设置状态)的前景色 |
anchor | 1. 控制文本(或图像)在 Checkbutton 中显示的位置 |
background | 1. 设置背景颜色 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Checkbutton 上的位图 |
borderwidth | 1. 指定 Checkbutton 的边框宽度 |
bd | 跟 borderwidth 一样 |
command | 1. 指定于该按钮相关联的函数或方法 |
compound | 1. 控制 Checkbutton 中文本和图像的混合模式 |
cursor | 1. 指定当鼠标在 Checkbutton 上飘过的时候的鼠标样式 |
disabledforeground | 1. 指定当 Checkbutton 不可用的时候前景色的颜色 |
font | 1. 指定 Checkbutton 中文本的字体 |
foreground | 1. 设置 Checkbutton 的文本和位图的颜色 |
fg | 跟 foreground 一样 |
height | 1. 设置 Checkbutton 的高度 |
highlightbackground | 1. 指定当 Checkbutton 没有获得焦点的时候高亮边框的颜色 |
highlightcolor | 1. 指定当 Checkbutton 获得焦点的时候高亮边框的颜色 |
highlightthickness | 1. 指定高亮边框的宽度 |
image | 1. 指定 Checkbutton 显示的图片 |
indicatoron | 1. 指定前边作为选择的小方块是否绘制 |
justify | 1. 定义如何对齐多行文本 |
offvalue | 1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0 |
onvalue | 1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0 |
padx | 1. 指定 Checkbutton 水平方向上的额外间距(内容和边框间) |
pady | 1. 指定 Checkbutton 垂直方向上的额外间距(内容和边框间) |
relief | 1. 指定边框样式 |
selectcolor | 1. 选择框的颜色(就是打勾勾的那个正方形小框框) |
selectimage | 1. 设置当 Checkbutton 为选中状态的时候显示的图片 |
state | 1. 指定 Checkbutton 的状态 |
takefocus | 1. 如果是 True,该组件接受输入焦点(用户可以通过 tab 键将焦点转移上来) |
text | 1. 指定 Checkbutton 显示的文本 |
textvariable | 1. Checkbutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) |
variable | 1. 将 Checkbutton 跟一个 Tkinter 变量关联 |
width | 1. 设置 Checkbutton 的宽度 |
wraplength | 1. 决定 Checkbutton 的文本应该被分成多少行 |
方法
deselect()
-- 取消 Checkbutton 组件的选中状态,也就是设置 variable 为 offvalue。
flash()
-- 刷新 Checkbutton 组件,该方法将重绘Checkbutton 组件若干次(在 ACTIVE 和NORMAL 状态间切换)。
invoke()
-- 调用 Checkbutton 中 command 选项指定的函数或方法,并返回函数的返回值。
-- 如果 Checkbutton 的状态是 DISABLED(不可用)或没有指定 command 选项,则该方法无效。
select()
-- 将 Checkbutton 组件设置为选中状态,也就是设置 variable 为 onvalue。
toggle()
-- 切换 Checkbutton 组件的状态(选中-> 未选中 / 未选中 -> 选中)。