Tkinter: 选项按钮与复选框

简介: Tkinter: 选项按钮与复选框
选项按钮与复选框
  • Radio Button: 选项按钮,在Widget控件中的类别名称是Radiobutton
  • Checkboxes称为复选框,在Widget控件中的类别名称是Checkbutton
Radiobutton选项按钮

Radiobutton名称的由来是无线电的按钮,在收音机时代可以用无线电的按钮选择特定频道

选项按钮最大特点:同时一次只能有一个选项被选取 --> 单选

可以设计含图像的选项按钮

可以设计让选项按钮与函数绑在一起,当选择适当的选项按钮时,可以自动执行相关的函数或方法

可能会有多组选项按钮,可以设计一组选项按钮有一个相关的变量,用此变量绑定这组选项按钮

Radiobutton建立选项按钮

Radiobutton(父对象,options,...)

Radiobutton( )方法内其他常用的options参数

  • activebackground:鼠标光标在选项按钮上时的背景颜色。
  • activeforeground:鼠标光标在选项按钮上时的前景颜色。
  • anchor:如果空间大于所需时,控制选项按钮的位置,默认是CENTER。
  • bg:标签背景或indicator的背景颜色。
  • bitmap:位图图像对象。
  • borderwidth或bd:边界宽度默认是两个像素。
  • command:当用户更改选项时,会自动执行此函数。
  • cursor:当鼠标光标在选项按钮上时的光标形状。
  • fg:文字前景颜色。
  • font:字形。
  • height:选项按钮上的文字有几行,默认是1行。
  • highlightbackground:当选项按钮取得焦点时的背景颜色。
  • highlightcolor:当选项按钮取得焦点时的颜色。
  • image:图像对象,如果要建立含图像的选项按钮时,可以使用此参数。
  • indicatoron:当此值为0时,可以建立盒子选项按钮。
  • justify:当含多行文字时,最后一行文字的对齐方式。
  • padx:默认是1,可设置选项按钮与文字的间隔。
  • pady:默认是1,可设置选项按钮的上下间距。
  • selectcolor:当选项按钮被选取时的颜色。
  • selectimage:如果设置图像选项按钮时,可由此设置当选项按钮被选取时的不同图像。
  • state:默认是state=NORMAL,若是设置DISABLE则以灰阶显示选项按钮表示暂时无法使用。
  • text:选项按钮旁的文字。
  • textvariable:以变量方式显示选项按钮文字。
  • underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
  • value:选项按钮的值,可以区分所选取的选项按钮。
  • variable:设置或取得目前选取的单选按钮,它的值类型通常是IntVar或StringVar。
  • width:选项按钮的文字有几个字符宽,省略时会自行调整为实际宽度。
  • wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。
绑定整组选项按钮
intvar = IntVar()
rb1 = Radiobutton(root,variable=intvar,value=x1)
rb2 = Radiobutton(root,variable=intvar,value=x2)
...

若是想取得这组选项按钮所选的选项,可以使用get( )方法,这时会将所选选项的参数value的值传回,方法set( ) 可以设置最初默认的value选项

Radiobutton例子
例子:选择性别

程序刚执行时默认选项是“男生”,此时窗口上方显示尚未选择,然后可以选择“男生”或“女生”,选择完成后显示“你是男生”或“你是女生”

from tkinter import *
def printSelect():
    num = var.get()
    if num == 1:
        label.config(text="你是男生")
    elif num == 2:
        label.config(text="你是女生")
        
root = Tk()
root.title("Demo")
var = IntVar()
var.set(1)
label = Label(root,text="尚未选择",width = 30)
label.pack()
rbboy = Radiobutton(root,text="男生",variable = var,value = 1,command=printSelect)
rbgirl = Radiobutton(root,text="女生",variable= var,value = 2, command=printSelect)
rbboy.pack()
rbgirl.pack()
root.mainloop()
例子:字典应用

可以考虑使用字典存储选项按钮相关信息,然后用遍历字典方式建立选项按钮

from tkinter import *
def printSelect():
    print(cities[var.get()])
    
root = Tk()
root.title("Demo City")
cities = {0:"北京", 1:"纽约", 2:"巴黎",3:"伦敦"}
var = IntVar()
var.set(0)
label = Label(root,text="选择最喜欢得城市",width= 30)
label.pack()
for val,city in cities.items():
    Radiobutton(root,variable=var,text=city,value=val,command=printSelect).pack()
root.mainloop()
例子:盒子选项按钮

tkinter中也提供盒子选项按钮的概念,可以在Radiobutton方法内使用indicatoron参数,将它设为0。

from tkinter import *
def printSelect():
    print(cities[var.get()])
    
root = Tk()
root.title("Demo City")
cities = {0:"北京", 1:"纽约", 2:"巴黎",3:"伦敦"}
var = IntVar()
var.set(0)
label = Label(root,text="选择最喜欢得城市",width= 30)
label.pack()
for val,city in cities.items():
    Radiobutton(root,variable=var,text=city,value=val,command=printSelect,indicatoron=0,width = 30).pack()
root.mainloop()

例子:含图像的选项按钮

可以将选项文字用图像取代

from tkinter import *
def printSelect():
    label.config(text=var.get())
    
root = Tk()
root.title("Demo")
imgStar = PhotoImage(file="star.gif")
imgSun = PhotoImage(file="sun.gif")
var = StringVar()
var.set("星星")
label = Label(root,text="尚未选择",width = 30)
label.pack()
rbStar = Radiobutton(root,variable = var,value = "星星", image = imgStar,command = printSelect)
rbStar.pack()
rbSun = Radiobutton(root,variable = var,value = "太阳", image = imgSun,command = printSelect)
rbSun.pack()
root.mainloop()

如果要建立含有图像和文字的选项按钮,需要在Radiobutton方法内增加text参数设置文字,增加compound参数设置图像与文字的位置

rbSun = Radiobutton(root,variable = var,text = "太阳",compound=RIGHT,value = "太阳", image = imgSun,command = printSelect)
Checkbutton复选框

Checkboxes: 复选框,它在Widget控件中的类别名称是Checkbutton。

复选框在屏幕上显示为一个方框,它与选项按钮最大的差别在于它是复选。

可以让每个复选框与函数绑在一起,当此选项被选择时,可以自动执行相关的函数或方法。

有多组复选框时,可以设计一组复选框有一个相关的变量,由此变量绑定这组复选框。

使用Checkbutton()建立复选框

Checkbutton(父对象,options,...)

Checkbutton( )方法内其他常用的options参数

  • activebackground:鼠标光标在复选框上时的背景颜色。
  • activeforeground:鼠标光标在复选框上时的前景颜色。
  • bg:标签背景或indicator的背景颜色。
  • bitmap:位图图像对象。
  • borderwidth或bd:边界宽度默认是两个像素。
  • command:当用户更改选项时,会自动执行此函数。
  • cursor:当鼠标光标在复选框上时的光标形状。
  • disabledforeground:当无法操作时的颜色。
  • font:字形。
  • height:复选框中的文字有几行,默认是1行。
  • highlightbackground:当复选框取得焦点时的背景颜色。
  • highlightcolor:当复选框取得焦点时的颜色。
  • image:图像对象,如果要建立含图像的选项按钮时,可以使用此参数。
  • justify:当含多行文字时,最后一行文字的对齐方式。
  • offvalue:这是控制变量,默认若复选框未选取值是0,可以由此更改设置此值。
  • onvalue:这是控制变量,默认若复选框未选取值是1,可以由此更改设置此值。
  • padx:默认是1,可设置复选框与文字的间隔。
  • pady:默认是1,可设置复选框的上下间距。
  • relief:默认是relief=FLAT,可由此控制复选框外框。
  • selectcolor:当复选框被选取时的颜色。
  • selectimage:如果设置图像复选框,可由此设置当复选框被选取时的不同图像。
  • state:默认是state=NORMAL,若是设置DISABLED则以灰阶显示复选框,表示暂时无法使用。如果鼠标光标在复选框上方表示ACTIVE。
  • text:复选框旁的文字。
  • underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
  • variable:设置或取得目前选取的复选框,它的值类型通常是IntVar或StringVar。
  • width:复选框的文字有几个字符宽,省略时会自行调整为实际宽度。
  • wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。
Checkbutton例子
例子:建立复选框的应用
from tkinter import *
root = Tk()
root.title("demo")
lab = Label(root,text="尚未选择",width = 30)
lab.grid(row = 0)
var1 = IntVar()
var2 = IntVar()
cbtnNFL = Checkbutton(root,text="足球",variable = var1)
cbtnNFL.grid(row = 1)
cbtnMLB = Checkbutton(root,text="棒球",variable=var2)
cbtnMLB.grid(row=2)
root.mainloop()
例子:简单编辑程序

建立一个对话框,这个对话框中有1个Entry文本框、4个功能按钮、1个复选框

  • Entry文本框:可以在此输入文字。
  • “选取”功能按钮:可以选取Entry内的文字。
  • “取消选取”功能按钮:可以取消选取Entry内的文字。
  • “删除”功能按钮:可以删除Entry内的文字。
  • “结束”功能按钮:让程序结束。
  • “只读”复选框:让Entry变为只读模式,无法写入或更改Entry内容。
from tkinter import *
def selAll():
    if var.get() == False:
        entry.select_range(0,END)
def deSel():
    if var.get() == False:
        entry.select_clear()
def clr():
    if var.get() == False:
        entry.delete(0,END)
def readonly():
    if var.get() == True:
        entry.config(state=DISABLED)
    else:
        entry.config(state=NORMAL)
root = Tk()
root.title("Demo")
entry = Entry(root)
entry.grid(row=0,column=0,columnspan= 4, padx = 5,pady = 5,sticky=W)
btnSel = Button(root,text= "全选",command= selAll)
btnSel.grid(row = 1,column=0,padx = 5,pady=5,sticky = W)
btnDesel = Button(root,text= "取消选取",command= deSel)
btnDesel.grid(row = 1,column=1,padx = 5,pady=5,sticky = W)
btnClr = Button(root,text= "清空",command= clr)
btnClr.grid(row = 1,column=2,padx = 5,pady=5,sticky = W)
btnQuit = Button(root,text= "结束",command= root.destroy)
btnQuit.grid(row = 1,column=3,padx = 5,pady=5,sticky = W)
# Checkboxes
var = BooleanVar()
var.set(False)
chkReadonly = Checkbutton(root,text="只读",variable=var,command= readonly)
chkReadonly.grid(row=2)
root.mainloop()
相关文章
|
Dubbo Java 应用服务中间件
nacos常见问题之Nacos dubbo耗时严重如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
243 0
|
5月前
|
人工智能 JSON 安全
MCP Server 实践之旅第 1 站:MCP 协议解析与云上适配
本文深入解析了Model Context Protocol(MCP)协议,探讨其在AI领域的应用与技术挑战。MCP作为AI协作的“USB-C接口”,通过标准化数据交互解决大模型潜力释放的关键瓶颈。文章详细分析了MCP的生命周期、传输方式(STDIO与SSE),并提出针对SSE协议不足的优化方案——MCP Proxy,实现从STDIO到SSE的无缝转换。同时,函数计算平台被推荐为MCP Server的理想运行时,因其具备自动弹性扩缩容、高安全性和按需计费等优势。最后,展望了MCP技术演进方向及对AI基础设施普及的推动作用,强调函数计算助力MCP大规模落地,加速行业创新。
1456 77
|
UED 数据可视化 内存技术
9个优秀网上免费标签云生成工具
我经常看到一些网站有云标签,我也很喜欢这样的云标签,网上我发现有很多的标签云教程,但是找到理想的并不是太多,这就是为什么我今天共享这几个标签元的原因 Wordle Wordle是产生“词云:。
1508 0
|
10月前
|
API 开发者 容器
DevEco Studio:熟练使用华为提供的集成开发环境DevEco Studio
【10月更文挑战第22天】随着HarmonyOS的普及,华为推出了官方集成开发环境DevEco Studio,以提高开发效率。本文通过开发一款天气应用的案例,详细介绍了如何使用DevEco Studio进行环境搭建、界面设计、数据绑定与交互、调试与运行等步骤,帮助开发者高效完成HarmonyOS应用开发。
861 6
|
11月前
|
数据可视化 搜索推荐 vr&ar
全景可视化特点+可视化功能实现
全景可视化特点+可视化功能实现
217 2
|
12月前
|
数据可视化 数据处理 Python
Python操作Excel:轻松实现数据处理与分析
Python操作Excel:轻松实现数据处理与分析
644 0
|
人工智能 安全 云计算
阿里云服务器购买之后发票如何申请?申请发票流程及常见问题参考
申请发票是很多用户尤其是企业级用户在购买完阿里云服务器之后非常关注的问题,对于初次购买阿里云服务器的用户来说,往往并不清楚如何找阿里云申请发票,本文以图文形式为大家介绍阿里云服务器购买完成之后申请发票的详细流程以及常见问题。
阿里云服务器购买之后发票如何申请?申请发票流程及常见问题参考
|
数据可视化 Python
【PyQt5桌面应用开发】2.可视化界面编程步骤(超级详细)
【PyQt5桌面应用开发】2.可视化界面编程步骤(超级详细)
1337 1
|
机器学习/深度学习
时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)
时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)