tkinter -- RadioButton

时间:2022-06-05
本文章向大家介绍tkinter -- RadioButton,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Radiobutton 为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念

不指定绑定变量,每个Radiobutton自成一组

创建一个简单的Radiobutton

示例:

import tkinter as tk
root = tk.Tk()
tk.Radiobutton(root, text='python').pack()
tk.Radiobutton(root, text='tkinter').pack()
tk.Radiobutton(root, text='py3study').pack()

root.mainloop()

效果:

创建一个 Radiobutton 组,使用绑定变量来设置选中的按钮

示例:

import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
# 选中value=1的按钮
v.set(1)
for i in range(3):
    tk.Radiobutton(root, variable=v, text='py3study', value=i).pack()
root.mainloop()

效果:

创建两个不同的组

代码:

import tkinter as tk
root = tk.Tk()
v1 = tk.IntVar()
v2 = tk.IntVar()
v1.set(1)
v2.set(2)

# 创建两个组
for v in [v1, v2]:  # v1,v2为实例化IntVar的对象
    # 每个组含有3个按钮
    for i in range(3):
        tk.Radiobutton(root, variable=v, text='py3study'+str(i), value=i).pack()
root.mainloop()

效果:

不同的组,各个按钮互相不影响

如果同一个组中的按钮使用相同的 alue,则这两个按钮的工作方式完全相同

代码:

import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(1)

# 每个组含有3个按钮
# 设置value = 1
for i in range(3):
    tk.Radiobutton(root, variable=v, text='py3study'+str(i), value=1).pack()
for i in range(3):
    tk.Radiobutton(root, variable=v, text='py3study'+str(2+i), value=i).pack()
root.mainloop()

效果:

上述的例子中共有4个 alue 为1的值,当选中其中的一个时,其他三个也会被选中;选中除了这四个只外的按钮时,四个按钮全部取消

与 Checkbutton 类似,每个 Radiobutton 可以有自己的处理函数,每当点击按钮时,系统会调用相应的处理函数

代码:

import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(0)

def r1():
    print('call r1')
def r2():
    print('call r2')
def r3():
    print('call r3')
def r4():
    print('call r4')

i = 0
for r in [r1, r2, r3, r4]:
    tk.Radiobutton(root, variable=v, text='py3study button', value=i, command=r).pack()
    tk.Radiobutton(root, variable=v, text='py3study button', value=i, command=r).pack()
    i += 1

root.mainloop()

效果:

注意虽然同时可以选中两个按钮,但每次点击按钮,执行的代码只有一次

Radiobutton 另一个比较实用的属性是 indicatoron,缺省情况下为1,如果将这个属性改为0,则其外观是 Sunken

代码:

import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(1)
for i in range(3):
    tk.Radiobutton(root, variable=v, indicatoron=0, text='py3study & tkinter', value=i).pack()

root.mainloop()

效果: