Tkinter单选框和多选框按钮

单选框按钮控件(Radiobutton),同样允许用户选择具体的选项值,不过与 Listbox 相比,单选按钮控件仅允许用户选择单一的选项值,各个选项值之间是互斥的关系,因此只有一个选项可以被用户选择。
Radiobutton 控件通常都是成组出现的,所有控件都使用相同的变量

Radiobutton 可以包含文本或图像,每一个按钮都可以与一个 Python 函数相关联。

当按钮被按下时,对应的函数会被执行。这里需要注意的是,单选按钮控件仅能显示单一字体的文本,但文本可以跨越多行,除此之外,您还可以为个别的字符添加下划线。Radiobutton 除常用的共有属性之外,还具有一些其他属性

activebackground
设置当 Radiobutton 处于活动状态(通过 state 选项设置状态)的背景色,默认值由系统指定

compound

  1. 默认值为 None,控制 Radiobutton 中文本和图像的混合模式,默认情况下,如果有指定位图或图片,则不显示文本
  2. 如果该选项设置为 “center”,文本显示在图像上(文本重叠图像)
  3. 设置为 “bottom”,”left”,”right” 或 “top”,那么图像显示在文本的旁边,比如如”bottom”,则显示图像在文本的下方。

disabledforeground
指定当 Radiobutton 不可用的时的前景色颜色,默认由系统指定

indicatoron

  1. 该参数表示选项前面的小圆圈是否被绘制,默认为 True,即绘制;
  2. 如果设置为 False,则会改变单选按钮的样式,当点击时按钮会变成 “sunken”(凹陷),再次点击变为 “raised”(凸起)

selectcolor
设置当 Radiobutton 为选中状态的时候显示的图片;如果没有指定 image 选项,该选项被忽略

takefocus
如果是 True,该组件接受输入焦点,默认为 False

variable
表示与 Radiobutton 控件关联的变量,注意同一组中的所有按钮的 variable 选项应该都指向同一个变量,通过将该变量与 value 选项值对比,可以判断用户选中了哪个按钮。

Radiobutton 控件的常用方法

deselect()
取消该按钮的选中状态

flash()
刷新 Radiobutton 控件,该方法将重绘 Radiobutton控件若干次(即在”active” 和 “normal” 状态间切换)

invoke()

  1. 调用 Radiobutton 中 command 参数指定的函数,并返回函数的返回值
  2. 如果 Radiobutton 控件的 state(状态) 是 “disabled” (不可用)或没有指定 command 选项,则该方法无效

select()
将 Radiobutton 控件设置为选中状态

Radiobutton 控件用来解决多选一的问题,它通常是成组出现的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import tkinter as tk

window = tk.Tk()
window.geometry('400x180')
# IntVar() 用于处理整数类型的变量
v = tk.IntVar()
# 根据单选按钮的 value 值来选择相应的选项
v.set(0)
# 使用 variable 参数来关联 IntVar() 的变量 v
tk.Radiobutton(window, text="C语言中文网", variable=v, value=0).pack(anchor = 'w')
tk.Radiobutton(window, text="CSDN平台", variable=v, value=2).pack(anchor = 'w')
tk.Radiobutton(window, text="知乎平台", variable=v, value=3).pack(anchor = 'w')
tk.Radiobutton(window, text="牛客网平台", variable=v, value=4).pack(anchor = 'w')
window.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import tkinter as tk

window = tk.Tk()
window.geometry('400x180')
site = [('美团外卖',1),
('饿了么外卖',2),
('美团闪购',3),
('艾奇外卖',4)]
# IntVar() 用于处理整数类型的变量
v = tk.IntVar()
for name, num in site:
radio_button = tk.Radiobutton(window,text = name, variable = v,value =num)
radio_button.pack(anchor ='w')
window.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import tkinter as tk
def select():
dict = {1:'C语言中文网',2:'菜鸟教程',3:'W3SCHOOL',4:'微学苑'}
strings = '您选择了' + dict.get(v.get()) + ',祝您学习愉快'
lable.config(text = strings)
window = tk.Tk()
window.geometry('400x180')
lable = tk.Label(window,font=('微软雅黑', '15','bold'),fg='#43CD80')
lable.pack(side ='bottom')
site = [('C语言中文网',1),
('菜鸟教程',2),
('W3SCHOOL',3),
('微学苑',4)]
# IntVar() 用于处理整数类型的变量
v = tk.IntVar()
for name, num in site:
radio_button = tk.Radiobutton(window,text = name, variable = v,value =num,command = select,indicatoron = False)
radio_button.pack(anchor ='w')
window.mainloop()

建议都自己手动敲一下这些代码,直接复制粘贴效果不大