The Tkinter Radiobutton Widget
Radiobutton(单选按钮)组件用于实现多选一的问题。Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。
Radiobutton 组件仅能显示单一字体的文本,但文本可以跨越多行。另外,还可以为其中的个别字符加上下划线(例如用于表示键盘快捷键)。默认情况下,tab 按键被用于在按钮间切换。
每一组Radiobutton 组件应该只与一个变量相关联,然后每一个按钮表示该变量的单一值。
何时使用 Radiobutton 组件?
Radiobutton 组件是用于实现多选一的问题,它几乎总是成组地被使用,其中所有成员共用相同的变量。
用法
Radiobutton 组件跟 Checkbutton 组件非常相似,为了实现其“单选”行为,确保一组中的所有按钮的variable 选项都使用同一个变量,并使用 value 选项来指定每个按钮代表什么值:
1. from tkinter import *
2.
3. master = Tk()
4.
5. v = IntVar()
6. v.set(2)
7.
8. Radiobutton(master,text="One", variable=v, value=1).pack(anchor=W)
9. Radiobutton(master,text="Two", variable=v, value=2).pack(anchor=W)
10. Radiobutton(master,text="Three", variable=v, value=3).pack(anchor=W)
11.
12. mainloop()
如果按钮(选项)比较多,小甲鱼强烈建议您使用以下方式来初始化Radiobutton 组件:
1. from tkinter import *
2.
3. master = Tk()
4.
5. GIRLS = [
6. ("西施", 1),
7. ("王昭君", 2),
8. ("貂蝉", 3),
9. ("杨玉环", 4)]
10.
11. v = IntVar()
12.
13. for girl, num in GIRLS:
14. b = Radiobutton(master,text=girl, variable=v, value=num)
15. b.pack(anchor=W)
16.
17. mainloop()
上图是一个普通的单选按钮样式,如果将它的 indicatoron 选项设置为 False,Radiobutton 的样式就会变成普通按钮的样式了:
1. b = Radiobutton(master, text=girl,variable=v, value=num, indicatoron=False)
2. b.pack(fill=X)
参数
Radiobutton(master=None, **options) (class)
master -- 父组件
**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
activebackground | 1. 设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的背景色 |
activeforeground | 1. 设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的前景色 |
anchor | 1. 控制文本(或图像)在 Radiobutton 中显示的位置 |
background | 1. 设置背景颜色 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Radiobutton 上的位图 |
borderwidth | 1. 指定 Radiobutton 的边框宽度 |
bd | 跟 borderwidth 一样 |
command | 1. 指定于该按钮相关联的函数或方法 |
compound | 1. 控制 Radiobutton 中文本和图像的混合模式 |
cursor | 1. 指定当鼠标在 Radiobutton 上飘过的时候的鼠标样式 |
disabledforeground | 1. 指定当 Radiobutton 不可用的时候前景色的颜色 |
font | 1. 指定 Radiobutton 中文本的字体 |
foreground | 1. 设置 Radiobutton 的文本和位图的颜色 |
fg | 跟 foreground 一样 |
height | 1. 设置 Radiobutton 的高度 |
highlightbackground | 1. 指定当 Radiobutton 没有获得焦点的时候高亮边框的颜色 |
highlightcolor | 1. 指定当 Radiobutton 获得焦点的时候高亮边框的颜色 |
highlightthickness | 1. 指定高亮边框的宽度 |
image | 1. 指定 Radiobutton 显示的图片 |
indicatoron | 1. 指定前边作为选择的小圆圈是否绘制 |
justify | 1. 定义如何对齐多行文本 |
padx | 1. 指定 Radiobutton 水平方向上的额外间距(内容和边框间) |
pady | 1. 指定 Radiobutton 垂直方向上的额外间距(内容和边框间) |
relief | 1. 指定边框样式 |
selectcolor | 1. 选择框的颜色 |
selectimage | 1. 设置当 Radiobutton 为选中状态的时候显示的图片 |
state | 1. 指定 Radiobutton 的状态 |
takefocus | 1. 如果是 True,该组件接受输入焦点(用户可以通过 tab 键将焦点转移上来) |
text | 1. 指定 Radiobutton 显示的文本 |
textvariable | 1. Radiobutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) |
value | 1. 标志该单选按钮的值 |
variable | 1. 与 Radiobutton 组件关联的变量 |
width | 1. 设置 Radiobutton 的宽度 |
wraplength | 1. 决定 Radiobutton 的文本应该被分成多少行 |
方法
deselect()
-- 取消该按钮的选中状态。
flash()
-- 刷新 Radiobutton 组件,该方法将重绘Radiobutton 组件若干次(在 ACTIVE 和NORMAL 状态间切换)。
-- 该方法在调试的时候很有用,也可以使用此方法提醒用户激活了该按钮。
invoke()
-- 调用 Radiobutton 中 command 选项指定的函数或方法,并返回函数的返回值。
-- 如果 Radiobutton 的状态是 DISABLED(不可用)或没有指定 command 选项,则该方法无效。
select()
-- 将 Radiobutton 组件设置为选中状态。