GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件
Checkbutton组件
Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮
from tkinter import * root = Tk()
v = IntVar() #设置一个Tkinter变量,用于表示该按钮是否被选中
c = Checkbutton(root,text="测试一下",variable=v)
c.pack() #如果选项被选中,那么变量v被赋值为1,否则为0
l = Label(root,textvariable=v) #用Label标签动态展示状态
l.pack()
mainloop()
执行结果:

当单击选项时,Label显示的变量相应地发生了改变。
根据上面的基础,但是如果是多个选项时,我们就可以用for循环来显示数据,例
from tkinter import * root = Tk()
gilrs = ["杨幂","唐嫣","小龙女","孙俪"]
v = []
for g in gilrs:
v.append(IntVar())
b = Checkbutton(root,text=g,variable=v[-1])
b.pack(anchor=W)
mainloop()
执行结果:

注意哦,我这里对pack()方法的anchor选项实现了定位显示位置,让其左对齐pack(anchor=W),其可设置为N,NE,E,SE,S,SW,W,NW和CENTER九个不同的值。这就是指南针的九个不同方位,按照“上北下南左西右东”的原则,如下图

Radiobutton组件
Radiobutton组件跟Checkbutton组件的用法基本一致,唯一不同的是Radiobuttonbutton实现的是单选效果,要实现这种互斥的效果,同一组内的所有Radiobutton只能共享一个variable选项,并且需要设置不同的value选项值。
from tkinter import * root = Tk()
v = IntVar()
Radiobutton(root,text="one",variable=v,value=1).pack(anchor=W)
Radiobutton(root,text="two",variable=v,value=2).pack(anchor=W)
Radiobutton(root,text="three",variable=v,value=3).pack(anchor=W)
Radiobutton(root,text="four",variable=v,value=4).pack(anchor=W)
mainloop()
执行效果:

程序中如果有多个选项,可以用循环来处理,这样代码会简洁,例如:
from tkinter import * root = Tk()
langs = [("python",1),("perl",2),("ruby",3)]
v = IntVar()
v.set(1)
for lang,num in langs:
b = Radiobutton(root,text=lang,variable=v,value=num)
b.pack(anchor=W)
mainloop()
执行结果:

如果你不喜欢按钮前面的小圆圈,可以替换成按钮的形式
b = Radiobutton(root,text=lang,variable=v,value=num,indicatoron=False)
b.pack(fill=X)
修改后程序如图:

LabelFrame组件
LabelFrame组件是Frame框架的进化版,从形态上来说,也就是添加了Label和Frame,但有了它,Checkbutton和Radiobutton的组件分组就简单了。
from tkinter import * root = Tk()
group = LabelFrame(root,text="最好的脚本语言是:",padx=5,pady=5)
group.pack(padx=10,pady=10) langs = [("python",1),("perl",2),("ruby",3)]
v = IntVar()
v.set(1)
for lang,num in langs:
b = Radiobutton(group,text=lang,variable=v,value=num)
b.pack(anchor=W)
mainloop()
执行结果:

GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件的更多相关文章
- GUI的最终选择 Tkinter(四):Entry、Listbox、Scrollbar和Scale组件
Entry组件 Entry组件就是平时所说的输入框.输入框是程序员用到的最多的一个程序,例如在输入账号和密码的时候需要提供两个输入框,用于接收密码的输入框还会有星号将实际输入的内容隐藏起来. Tkin ...
- GUI的最终选择 Tkinter(七):菜单Menu组件、Menubutton组件、OptionMenu组件
Menu组件 今天说的Menu组件就是一些菜单组件,开始点点点... Tkinter提供了一个Menu组件,可以实现顶级菜单,下拉菜单和弹出菜单.由于底层是代码实现和优化的,所以不太建议通过按钮和其他 ...
- Python之GUI的最终选择(Tkinter)
首先,Tkinter是Python默认的GUI库,想IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以啦 1 import tkinter (1)Tkinter初体验: 1 ...
- GUI的最终选择 Tkinter(九):事件
Tkinter事件处理 Tkinter应用会花费大部分的时间在处理事件循环中(通过mainloop()方法进入),事件可以是触发的鼠标,键盘的操作,管理窗口触发的重绘事件(在多数情况下都是有用户间接引 ...
- GUI的最终选择 Tkinter(八):Message组件、Spinbox组件、PanedWindow组件、Toplevel组件
Message组件 Message(消息)组件是Label组件的变体,用于显示多行文本消息,Message组件能够自动执行,并调整文本的尺寸使其适应给定的尺寸. from tkinter import ...
- GUI的最终选择 Tkinter(二):Label和Button组件
Label组件 Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图: 在来看下它的代码: from tkinter im ...
- GUI的最终选择 Tkinter(六):Canvas组件
Canvas组件,是一个可以让你任性的组件,一个可以让你随心所欲地绘制界面的组件.Canvas是一个通用的组件,它通常用于显示和编辑图形,可以用它来绘制直线,圆形,多边形,甚至是绘制其他组件. 在Ca ...
- GUI的最终选择Tkinter模块初级篇
一.Tkinter模块的基本使用 1)实例化窗口程序 import tkinter as tk app = tk.Tk() app.title("FishC Demo") app. ...
- GUI的最终选择 Tkinter(五):Text用法
Text组件 绘制单行文本使用Label组件,多行选使用Listbox,输入框使用Entry,按钮使用Button组件,还有Radiobutton和Checkbutton组件用于提供单选或多选的情况, ...
随机推荐
- linux绑定多个ip(转载)
在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Redhat系列(redhat,Fedora Core,Centos)中的实现方法和一种在Gentoo等其他Linux中普遍适用的方法. 1. ...
- PRVF-0002 : could not retrieve local node name
安装 oracle 的时候,./runInstaller 启动报错 PRVF-0002 : could not retrieve local node name 碰到这个错误是因为 OUT试图对你主 ...
- nodejs 静态文件服务器
https://cnodejs.org/topic/4f16442ccae1f4aa27001071 http://blog.csdn.net/zhangxin09/article/details/8 ...
- centos下升级mysql5.5.47到5.7.14操作过程
一. 查看已安装Mysql基础信息通过mysql –V 查看下mysql版本可以通过命令find / -name mysql 得到下面信息 1.安装目录[root@jjxnhd-192-10 mysq ...
- 【转】 Pro Android学习笔记(四五):Dialog(2):DialogFragment
[-] 重写onCreateView 通过onCreateView设置UI和按键反馈 信息保存 重写onCreateDialog DialogFragment的实例newInstance()已经在上一 ...
- bean validator - Hibernate validator
在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节.比如参数不能为null,email那么必须符合email的格式,如果手动进行if判断或者写正则表达式判断无意开发效率太慢,在时间.成本.质 ...
- arm-linux-3.4.2移植for2440
----------------------------2440 上内核3.4.2移植------------------------ PS:因wifi项目中无wifi驱动,需新内核. 1.首先在内核 ...
- 使用root直接安装python3.5.2
操作系统:Centos7.4 不使用pyenv管理器直接进行编译安装3.5.2版本. 下载tgz的包,如果没有安装wget,请yum -y install wget 解压python包: 将解压后的包 ...
- 问题:sqlserver if;结果: SqlServer if else和case
SqlServer if else和case 分类: SQLSERVER 2013-03-01 16:51 11328人阅读 评论(0) 收藏 举报 行转列 目录(?)[+] if else 要提示的 ...
- 关于 sklearn.decomposition.KernelPCA的简单介绍
from sklearn import decomposition import numpy as np A1_mean = [1, 1] A1_cov = [[2, .99], [1, 1]] A1 ...