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 组件设置为选中状态。