Tkinter 教程 - 单选按钮

Jinku Hu 2023年1月30日 2018年2月2日
  1. Tkinter Radiobutton 单选按钮基本示例
  2. Tkinter 单选按钮-获取值
  3. 更改 Tkinter 单选控件指示类型
  4. 绑定 Tkinter Radiobutton 回调函数
Tkinter 教程 - 单选按钮

在前几节中,我们已经学过标签按钮多选按钮。Tkinter 不同的控件具有非常相似的选项、属性或方法,因此从本节开始,我们可以快速学习。

radiobuton 单选按钮是众多按钮中的一个。它列出的选择中有多个选项,但用户只能选择其中一个。与之前介绍的控件相同,单选按钮可以包含文本或图像,并且可以将回调函数或方法绑定给它。按下该按钮时,将自动触发回调函数。

Tkinter Radiobutton 单选按钮基本示例

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

radioValue = tk.IntVar() 

 
rdioOne = tk.Radiobutton(app, text='January',
                             variable=radioValue, value=1) 
rdioTwo = tk.Radiobutton(app, text='Febuary',
                             variable=radioValue, value=2) 
rdioThree = tk.Radiobutton(app, text='March',
                             variable=radioValue, value=3)

rdioOne.grid(column=0, row=0)
rdioTwo.grid(column=0, row=1)
rdioThree.grid(column=0, row=2)

app.mainloop()

以上单选按钮示例的结果如下,

Tkinter Checkbutton 基本示例

radioValue = tk.IntVar()

就像多选按钮一样,单选按钮需要将特定数据类型的值与它们相关联。

rdioOne = tk.Radiobutton(app, text='January',
                             variable=radioValue, value=1) 
rdioTwo = tk.Radiobutton(app, text='Febuary',
                             variable=radioValue, value=2) 
rdioThree = tk.Radiobutton(app, text='March',
                             variable=radioValue, value=3)

这里创建了带有 JanuaryFebuaryMarch 文本的按钮。同一组中的单选按钮必须具有唯一值。

小思考
想一下,如果它们有重复数值的话,会发生什么?

Tkinter 单选按钮-获取值

如上例所示,同一组中的单选按钮共享相同的变量 radioValue,并且使用 value 选项赋给了不同的数值。

所选择的单选按钮的值自动地更新变量 radioValue,它是一个 tk.IntVar

标签文本在以下示例代码中自动显示所选按钮的值。

import tkinter as tk
 
app = tk.Tk() 
app.geometry('200x100')

radioValue = tk.IntVar() 

 
rdioOne = tk.Radiobutton(app, text='January',
                             variable=radioValue, value=0) 
rdioTwo = tk.Radiobutton(app, text='Febuary',
                             variable=radioValue, value=1) 
rdioThree = tk.Radiobutton(app, text='March',
                             variable=radioValue, value=2)

rdioOne.grid(column=0, row=0, sticky="W")
rdioTwo.grid(column=0, row=1, sticky="W")
rdioThree.grid(column=0, row=2, sticky="W")

labelValue = tk.Label(app, textvariable=radioValue)
labelValue.grid(column=2, row=0, sticky="E", padx=40)

app.mainloop()

labelValue 标签的 textvariable 和单选按钮的选项 variable 是一样的,从而使标签的文字可以自动更新。

Tkinter Radiobutton_get 值

更改 Tkinter 单选控件指示类型

默认的单选按钮指示是一个圆形孔,内部有空白区域,但也可以用包含文本或图像的框来替换它。未选中单选按钮时会弹出文本框,按下时会出现凹陷。

Tkinter 教程弹出和凹陷

rdioOne = tk.Radiobutton(app, text='I am raised',
                             variable=radioValue, value=1,
                             indicatoron = 0) 

indicatoron 是启用或关闭按钮圆孔指示器的选项。indicatoron =indictor on

绑定 Tkinter Radiobutton 回调函数

它与 [Tkinter 多选按钮](/zh/tutorial/tkinter-tutorial/tkinter-checkbutton/#Tkinter Checkbutton Callback Function Binding)中如何设置按钮回调函数完全相同,使用选项 command = 来完成。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn