一、介绍
Radiobutton
(单选按钮)组件用于实现多选一的问题。Radiobutton
组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。
Radiobutton
组件仅能显示单一字体的文本,但文本可以跨越多行。另外,还可以为其中的个别字符加上下划线(例如用于表示键盘快捷键)。默认情况下,tab 按键被用于在按钮间切换。
每一组Radiobutton
组件应该只与一个变量相关联,然后每一个按钮表示该变量的单一值。
二、使用
Radiobutton
组件跟 Checkbutton
组件非常相似,为了实现其“单选”行为,确保一组中的所有按钮的 variable
选项都使用同一个变量,并使用 value 选项来指定每个按钮代表什么值:
from tkinter import*
master = Tk()
var = IntVar()
var.set(2)
Radiobutton(master, text="One", variable=var, value=1).pack(anchor=W)
Radiobutton(master, text="Two", variable=var, value=2).pack(anchor=W)
Radiobutton(master, text="Three", variable=var, value=3).pack(anchor=W)
mainloop()
#variable=var的含义是,如果被选中,那么var就会被赋予value的值
如果按钮(选项)比较多,建议使用以下方式来初始化 Radiobutton
组件:
from tkinter import *
master = Tk()
GIRLS = [
("西施", 1),
("王昭君", 2),
("貂蝉", 3),
("杨玉环", 4)]
v = IntVar()
for girl, num in GIRLS:
b = Radiobutton(master, text=girl, variable=v, value=num)
b.pack(anchor=W)
mainloop()
上图是一个普通的单选按钮样式,如果将它的 indicatoron
选项设置为 False
,Radiobutton
的样式就会变成普通按钮的样式了:
b = Radiobutton(master, text=girl, variable=v, value=num, indicatoron=False)
b.pack(fill=X)
三、参数
Radiobutton(master=None, **options) (class)
master
-- 父组件
**options
-- 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
---|---|
activebackground | 1. 设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的背景色 2. 默认值由系统指定 |
activeforeground | 1. 设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的前景色 2. 默认值由系统指定 |
anchor | 1. 控制文本(或图像)在 Radiobutton 中显示的位置 2. N, NE, E, SE, S, SW, W, NW, 或 CENTER 来定位(EWSN代表东西南北,上北下南左西右东) 3. 默认值是 CENTER |
background | 1. 设置背景颜色 2. 默认值由系统指定 |
bg | 跟 background 一样 |
bitmap | 1. 指定显示到 Radiobutton 上的位图 2. 如果指定了 image 选项,则该选项被忽略 |
borderwidth | 1. 指定 Radiobutton 的边框宽度 2. 默认值由系统指定,通常是 1 或 2 像素 |
bd | 跟 borderwidth 一样 |
command | 1. 指定于该按钮相关联的函数或方法 2. 当按钮被按下时由 Tkinter 自动调用对应的函数或方法3 . 如果不设置此选项,那么该按钮被按下后啥事儿也不会发生 |
compound | 1. 控制 Radiobutton中文本和图像的混合模式 2. 默认情况下,如果有指定位图或图片,则不显示文本 3. 如果该选项设置为 CENTER,文本显示在图像上(文本重叠图像) 4. 如果该选项设置为 BOTTOM,LEFT,RIGHT 或 TOP,那么图像显示在文本的旁边(如 BOTTOM,则图像在文本的下方)5. 默认值是 NONE |
cursor | 1. 指定当鼠标在Radiobutton 上飘过的时候的鼠标样式 2. 默认值由系统指定 |
disabledforeground | 1. 指定当 Radiobutton 不可用的时候前景色的颜色 2. 默认值由系统指定 |
font | 1. 指定 Radiobutton 中文本的字体 2. 一个 Radiobutton 只能设置一种字体3. 默认值由系统指定 |
foreground | 1. 设置 Radiobutton 的文本和位图的颜色 2. 默认值由系统指定 |
fg | 跟 foreground 一样 |
height | 1. 设置 Radiobutton 的高度 2. 如果Radiobutton 显示的是文本,那么单位是文本单元 3. 如果 Radiobutton 显示的是图像,那么单位是像素(或屏幕单元) 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Radiobutton 的内容计算出高度 |
highlightbackground | 1. 指定当 Radiobutton 没有获得焦点的时候高亮边框的颜色 2. 默认值由系统指定,通常是标准背景颜色 |
highlightcolor | 1. 指定当 Radiobutton获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度 2. 默认值是 1 |
image | 1. 指定 Radiobutton 显示的图片 2. 该值应该是PhotoImageBitmapImage,或者能兼容的对象 3. 该选项优先于 text 和 bitmap 选项 |
indicatoron | 1. 指定前边作为选择的小源泉是否绘制 2. 默认是绘制的3. 该选项会影响到按钮的样式,如果设置为 False,则点击后该按钮变成 SUNKEN(凹陷),再次点击变为 RAISED(凸起) |
justify | 1. 定义如何对齐多行文本 2. 使用 LEFT,RIGHT 或 CENTER 3. 注意,文本的位置取决于 anchor 选项 4. 默认值是 CENTER |
offvalue | 1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0 2. 设置 offvalue 的值可以自定义未选中状态的值(详见上方用法举例) |
onvalue | 1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0 2. 设置 onvalue 的值可以自定义选中状态的值(详见上方用法举例) |
padx | 1. 指定 Radiobutton 水平方向上的额外间距(内容和边框间) 2. 默认值是 1 |
pady | 1. 指定 Radiobutton 垂直方向上的额外间距(内容和边框间) 2. 默认值是 1 |
relief | 1. 指定边框样式 2. 该值通常是 FLAT,除非你设置 indicatoron 选项为 False 3. 如果 indicatoron 为 False,你还可以设置 SUNKEN,RAISED,GROOVE 或 RIDGE |
selectcolor | 1. 选择框的颜色(就是打勾勾的那个圆形小框框) 2. 默认值由系统指定 |
selectimage | 1. 设置当 Radiobutton 为选中状态的时候显示的图片 2. 如果没有指定 image 选项,该选项被忽略 |
state | 1. 指定 Radiobutton的状态 2. 默认值是 NORMAL 3. 另外你还可以设置 ACTIVE 或 DISABLED |
takefocus | 1. 如果是 True,该组件接受输入焦点(用户可以通过 tab 键将焦点转移上来) 2. 默认值是 False |
text | 1. 指定 Radiobutton 显示的文本 2. 文本可以包含换行符 3. 如果设置了 bitmap 或 image 选项,该选项则被忽略 |
textvariable | 1. Radiobutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容 2. 如果变量被修改,Radiobutton 的文本会自动更新 |
underline | 1. 跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 2. 默认值是 -13. 例如设置为 1,则说明在 Radiobutton 的第 2 个字符处画下划线 |
variable | 1. 与 Radiobutton 组件关联的变量 2. 同一组中的所有按钮的 variable 选项应该都指向同一个变量 3. 通过将该变量与 value 选项的值对比,即可判断用户选中了哪个按钮 |
width | 1. 设置 Radiobutton 的宽度 2. 如果 Radiobutton显示的是文本,那么单位是文本单元 3. 如果 Radiobutton 显示的是图像,那么单位是像素(或屏幕单元) 4. 如果设置为 0 或者干脆不设置,那么会自动根据 Radiobutton 的内容计算出宽度 |
wraplength | 1. 决定 Radiobutton 的文本应该被分成多少行 2. 该选项指定每行的长度,单位是屏幕单元 3. 默认值是 0 |
value | 1. 标志该单选按钮的值 2. 在同一组中的所有按钮应该拥有各不相同的值 3. 通过将该值与 variable 选项的值对比,即可判断用户选中了哪个按钮 |
四、方法
1、deselect()
取消 Checkbutton
组件的选中状态,也就是设置 variable
为 offvalue
。
2、flash()
刷新Checkbutton
组件,该方法将重绘 Checkbutton 组件若干次(在 ACTIVE 和 NORMAL 状态间切换)。
3、invoke()
调用 Checkbutton
中command
选项指定的函数或方法,并返回函数的返回值。
如果 Checkbutton
的状态是 DISABLED
(不可用)或没有指定command
选项,则该方法无效。
4、select()
将Checkbutton
组件设置为选中状态,也就是设置 variable
为 onvalue
。
https://fishc.com.cn/forum.php?mod=viewthread&tid=59198&extra=page%3D1%26filter%3Dtypeid%26typeid%3D604