软件测试|超好用超简单的Python GUI库——tkinter(十二)

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 软件测试|超好用超简单的Python GUI库——tkinter(十二)

前言

上一篇文章我们介绍了tkinter单选框的实现,单选框的各选项之间的关系是互斥的,选择了A选项,就不能选B选项;复选框就不一样,各个选项之间是并列的,我选了A还可以选B和C选项,我们在大学选课以及我们在啊购物时选购商品就是类似的情况。

tkinter提供了Checkbutton复选框控件来帮助我们实现复选框的控制功能,本篇文章我们来介绍复选框控件的使用。

Checkbutton复选框控件

Checkbutton复选框控件基本语法如下:

Checkbutton(master=None, **options)

复选框控件,除了具有常用的共有属性之外,还具有一些其他重要属性和常用方法,下面对它们做简单地介绍:

属性 说明
text 显示的文本,使用 "\n" 来对文本进行换行。
variable 1. 和复选框按钮关联的变量,该变量值会随着用户选择行为来改变(选或不选),即在 onvalue 和 offvalue 设置值之间切换,这些操作由系统自动完成
2. 在默认情况下,variable 选项设置为 1 表示选中状态,反之则为 0,表示不选中。
onvalue 通过设置 onvalue 的值来自定义选中状态的值。
offvalue 通过设置 offvalue 的值来自定义未选中状态的值。
indicatoron 默认为 True,表示是否绘制用来选择的选项的小方块,当设置为 False 时,会改变原有按钮的样式,与单选按钮相同
selectcolor 选择框的颜色(即小方块的颜色),默认由系统指定
selectimage 设置当 Checkbutton 为选中状态的时候显示的图片,若如果没有指定 image 选项,该选项被忽略
textvariable Checkbutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容,如果变量被修改,Checkbutton 的文本会自动更新
wraplength 表示复选框文本应该被分成多少行,该选项指定每行的长度,单位是屏幕单元,默认值为 0

示例如下:

from tkinter import *
win = Tk()
win.title("混动车型选择")
win.geometry('500x200')
win.resizable(0,0)
lb = Label(text='丰田混动车型',font=('微软雅黑', 18,'bold'),fg='#CD7054')
lb.pack()

# 新建整型变量
CheckVar1 = IntVar()
CheckVar2 = IntVar()
CheckVar3 = IntVar()
CheckVar4 = IntVar()
# 设置三个复选框控件,使用variable参数来接收变量
check1 = Checkbutton(win, text="卡罗拉",font=('微软雅黑', 15,'bold'),variable = CheckVar1,onvalue=1,offvalue=0)
check2 = Checkbutton(win, text="凯美瑞",font=('微软雅黑', 15,'bold'),variable = CheckVar2,onvalue=1,offvalue=0)
check3 = Checkbutton(win, text="亚洲龙",font=('微软雅黑', 15,'bold'),variable = CheckVar3,onvalue=1,offvalue=0)
check4 = Checkbutton(win, text="雷凌",font=('微软雅黑', 15,'bold'),variable = CheckVar4,onvalue=1,offvalue=0)
# 选择第一个为默认选项
# check1.select ()
check1.pack (side = LEFT)
check2.pack (side = LEFT)
check3.pack (side = LEFT)
check4.pack (side = LEFT)
# 定义执行函数
def study():
    # 没有选择任何项目的情况下
    if (CheckVar1.get() == 0 and CheckVar2.get() == 0 and CheckVar3.get() == 0 and CheckVar4.get() == 0):
        s = '您还没选择任何车型'
    else:
        s1 = "卡罗拉" if CheckVar1.get() == 1 else ""
        s2 = "凯美瑞" if CheckVar2.get() == 1 else ""
        s3 = "亚洲龙" if CheckVar3.get() == 1 else ""
        s4 = "雷凌" if CheckVar4.get() == 1 else ""
        s = "您选择了%s %s %s" % (s1, s2, s3, s4)
     #设置标签lb2的字体
    lb2.config(text=s)
btn = Button(win,text="选好了",bg='#BEBEBE',command=study)
btn.pack(side = LEFT)
# 该标签,用来显示选择的文本
lb2 = Label(win,text='',bg ='#9BCD9B',font=('微软雅黑', 11,'bold'),width = 5,height=2)
lb2.pack(side = BOTTOM, fill = X)
# 显示窗口
win.mainloop()

运行程序,结果如下:

image.png

复选框控件常用方法

方法 属性
desellect() 取消 Checkbutton 组件的选中状态,也就是设置 variable 为 offvalue
flash() 刷新 Checkbutton 组件,对其进行重绘操作,即将前景色与背景色互换从而产生闪烁的效果。
invoke() 1. 调用 Checkbutton 中 command 选项指定的函数或方法,并返回函数的返回值
2. 如果 Checkbutton 的state(状态)"disabled"是 (不可用)或没有指定 command 选项,则该方法无效
select() 将 Checkbutton 组件设置为选中状态,也就是设置 variable 为 onvalue
toggle() 改变复选框的状态,如果复选框现在状态是 on,就改成 off,反之亦然

示例如下:

from tkinter import *
win = Tk()
win.title("混动车型选择")
win.geometry('500x200')
win.resizable(0,0)
lb = Label(text='丰田混动车型选择',font=('微软雅黑', 18,'bold'),fg='#CD7054')
lb.pack()

# 设置三个复选框控件,
check1 = Checkbutton(win, text="卡罗拉",font=('微软雅黑', 15,'bold'),onvalue=1,offvalue=0)
check2 = Checkbutton(win, text="凯美瑞",font=('微软雅黑', 15,'bold'),onvalue=1,offvalue=0)
check3 = Checkbutton(win, text="亚洲龙",font=('微软雅黑', 15,'bold'),onvalue=1,offvalue=0)
# 将第一个 复选框按钮的 variable值,设置为 onvalue =1 ,表示选中状态
check1.select ()
# 取消了第一个复选框的选中状态
check1.toggle()
check1.pack (side = LEFT)
check2.pack (side = LEFT)
check3.pack (side = LEFT)
# 显示窗口
win.mainloop()

运行脚本,结果如下:

image.png

总结

本文主要介绍了tkinter复选框的实现,复选框是我们常用的功能,在设计GUI时经常会用到,希望能够帮助大家,后续我们将介绍tkinterScale控件。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
26天前
|
测试技术 开发者 Python
Python(GUI)之活动积分记录表
本文介绍了一套使用Python的Tkinter库构建的学生活动积分记录系统。该系统允许教师选择班级和学生,输入加分分数及原因,并将数据保存至文件,旨在简化学生积分管理流程,提升教学效率。
45 6
|
6天前
|
XML JSON 数据库
Python的标准库
Python的标准库
117 77
|
21天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
61 4
数据分析的 10 个最佳 Python 库
|
7天前
|
XML JSON 数据库
Python的标准库
Python的标准库
33 11
|
20天前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
82 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
7天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
46 8
|
28天前
|
存储 人工智能 搜索推荐
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
Memoripy 是一个 Python 库,用于管理 AI 应用中的上下文感知记忆,支持短期和长期存储,兼容 OpenAI 和 Ollama API。
87 6
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
|
15天前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
27 4
|
14天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
23天前
|
测试技术 Python
Python中的异步编程与`asyncio`库
Python中的异步编程与`asyncio`库