博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译][Tinkter 教程05] Radiobutton 控件
阅读量:6975 次
发布时间:2019-06-27

本文共 1851 字,大约阅读时间需要 6 分钟。

已获原作者授权. 原系列地址:

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

上面代码输出如下窗口:

图1

改进例子

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

from Tkinter import *root = Tk()v = IntVar()v.set(1)  # initializing the choice, i.e. Pythonlanguages = [    ("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()

上例运行后将显示如下窗口:

图2

指示器

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

我们将上例中 Radiobutton 的创建代码修改如下:

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

在上面的代码中, 我们使用了 indicatoron 参数 和 width 参数. 上例运行显示如下:

图3


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

转载地址:http://wjrsl.baihongyu.com/

你可能感兴趣的文章
(最长上升子序列 并记录过程)FatMouse's Speed -- hdu -- 1160
查看>>
面面观 | CentOS install etcd 测试
查看>>
[CF566A]Matching Names
查看>>
[Oracle]ORA-01461: can bind a LONG value only for insert into a LONG column
查看>>
Linux学习之CentOS(三十三)--DNS基础及域名系统架构
查看>>
[复变函数]第03堂课 1.2 复平面上的点集
查看>>
Python:Opening Python Classes
查看>>
mvc:view-controller
查看>>
Android推送分析
查看>>
微信公众平台开发者文档
查看>>
ORACLE数据库不同故障下的恢复总结
查看>>
使用eclipse转换普通项目为web项目
查看>>
ASP.NET 5中的ASP.NET Bundles跑到哪里去了?
查看>>
云计算解码:技术架构和产业运营
查看>>
windows7学习一
查看>>
单选按钮易忽略的Group属性
查看>>
转 sql 优化
查看>>
PHP安全相关的配置(1)
查看>>
virtualbox 中,虚拟机网络使用NAT方式时,其它机器对虚拟机的访问
查看>>
Salesforce.com + AutoCAD WS集成研究 part2
查看>>