tkinter -- RadioButton

发布时间:2018-06-01 20:08:19编辑:Run阅读(3545)

    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()

    效果:

    blob.png



    创建一个 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()

    效果:

    blob.png



    创建两个不同的组

    代码:

    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()

    效果:

    blob.png

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



    如果同一个组中的按钮使用相同的 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()

    效果:

    444.gif

    上述的例子中共有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()

    效果:

    444.gif

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



    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()

    效果:

    blob.png

关键字

上一篇: tkinter -- CheckButton

下一篇: tkinter -- Listbox