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

简介: 软件测试|超好用超简单的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控件。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
3月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
531 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
3月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
265 0
|
2月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
268 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
2月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
340 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
开发框架 开发者 Python
探索Python GUI编程:从Tkinter到PyQt的全方位使用
在当今技术发展日新月异的时代,Python作为一种简洁高效的编程语言,拥有广泛的应用领域。其中,GUI(图形用户界面)编程是Python开发者经常涉足的领域之一。本文将介绍两个常用的Python GUI库——Tkinter和PyQt,并深入探讨其使用方法、特点以及适用场景,帮助读者全面了解Python GUI编程的魅力。
309 0
|
网络协议 Linux iOS开发
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
458 0
|
数据可视化 Linux C++
Python GUI编程:Tkinter与PyQt的选择
Python作为一门流行的编程语言,在GUI编程领域也有着非常强大的工具。其中,Tkinter和PyQt是两个备受推崇的GUI库。本文将介绍这两个库的优缺点,并帮助读者决定应该选择哪一个。
|
前端开发 数据可视化 搜索推荐
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
1404 1
|
SQL 安全 关系型数据库
【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程
【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程
594 0
|
SQL 前端开发 Java
Python GUI编程(Tkinter)
Python GUI编程(Tkinter)

推荐镜像

更多