[Tinkter 教程05] Radiobutton 控件

原系列地址: Python Tkinter

Radio Buttons

单选按钮是一种可在多个预先定义的选项中选择出一项的 Tkinter 控件. 单选按钮可显示文字或图片. 显示文字时只能使用预设字体. 该控件可以绑定一个 Python 函数或方法, 当单选按钮被选择时, 该函数或方法将被调用.
单选按钮 (Radio Button) 这个名字来源于收音机 (Radio) 上的调频按钮, 这些按钮用来选择特定波段或预设电台. 如果一个按钮被按下, 其他同类的按钮就会弹起, 即同时只有一个按钮可被按下.
一组单选按钮控件和同一个变量关联. 点击其中一个单选按钮将把这个变量设为某个预定义的值.

简单例子

from Tkinter import *

root = Tk()

v = IntVar()

Label(root, 
      text="""Choose a 
programming language:""",
      justify = LEFT,
      padx = 20).pack()
Radiobutton(root, 
            text="Python",
            padx = 20, 
            variable=v, 
            value=1).pack(anchor=W)
Radiobutton(root, 
            text="Perl",
            padx = 20, 
            variable=v, 
            value=2).pack(anchor=W)

mainloop()

上面代码输出如下窗口:
这里写图片描述

改进例子

很多情况下, 单选按钮项目将不止是两项. 在选项很多时, 逐个生成单选项的方法就显得太笨了. 解决办法如下例中所示, 我们预先定义了一个 list, 其元素中包含了按钮文本及其对应的选项值. 这样我们就可以用一个循环来建立这组单选按钮了.

from Tkinter import *

root = Tk()

v = IntVar()
v.set(1)  # initializing the choice, i.e. Python

languages = [
    ("Python",1),
    ("Perl",2),
    ("Java",3),
    ("C++",4),
    ("C",5)
]

def ShowChoice():
    print v.get()

Label(root, 
      text="""Choose your favourite 
programming language:""",
      justify = LEFT,
      padx = 20).pack()

for txt, val in languages:
    Radiobutton(root, 
                text=txt,
                padx = 20, 
                variable=v, 
                command=ShowChoice,
                value=val).pack(anchor=W)

mainloop()

上例运行后将显示如下窗口:
这里写图片描述

指示器

除了使用默认的空心圆形作为选项条目, 我们也可以用一个文本框来展示选项. 将 indicatoron 选项设置为 0 即可达到该目的: 这表示单选按钮不会有额外的单选指示器.
我们将上例中 Radiobutton 的创建代码修改如下:

    Radiobutton(root, 
                text=txt,
                indicatoron = 0,
                width = 20,
                padx = 20, 
                variable=v, 
                command=ShowChoice,
                value=val).pack(anchor=W)

在上面的代码中, 我们使用了 indicatoron 参数 和 width 参数. 上例运行显示如下:
这里写图片描述


译者水平有限, 如有疏漏, 欢迎指正.
已获得原作者授权. 原文地址: Radiobuttons

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值