【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例
www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,ZEEKLOG全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5和tkinter桌面开发,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。
所属的专栏:
景天的主页:
www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

文章目录

PyQt5中多选按钮QCheckBox的详细用法教程

引言

PyQt5 是一个跨平台的GUI(图形用户界面)工具包,用于Python编程语言。它基于Qt库,提供了丰富的控件和功能,使得开发人员能够轻松创建复杂的桌面应用程序。在PyQt5中,QCheckBox控件用于实现多选按钮,允许用户从一组选项中选择一个或多个选项。本文将结合实际案例,详细介绍QCheckBox控件在PyQt5中的使用方法。

QCheckBox控件的基本属性

www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

控件显示的文本

QCheckBox控件的文本通过其构造函数传入,用于显示给用户看的选项描述。例如:

checkbox = QCheckBox('选项1', self) 

是否处于选中状态

QCheckBox控件有一个checked属性,表示控件当前是否被选中。此属性为布尔类型,True表示已选中,False表示未选中。

三态支持

默认情况下,QCheckBox控件只支持两种状态:选中(checked)和未选中(unchecked)。但是,通过设置tristate属性为True,可以让QCheckBox支持三种状态:选中(checked)、半选中(partially checked)和未选中(unchecked)。这在某些情况下非常有用,比如表示部分完成或不确定的状态。

www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

#设置支持三态
cp.setTristate(True)

设置支持三态以后,点一些并未选中

www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

再点一下才是选中

www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

状态改变信号

QCheckBox控件在状态改变时会发出stateChanged信号。这个信号可以被连接到一个槽函数,以执行特定的操作。

基本使用方法

导入必要的模块

首先,需要从PyQt5.QtWidgets模块中导入QCheckBoxQApplicationQWidget等必要的类和函数。

from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox 

创建一个简单的QCheckBox

接下来,创建一个QWidget作为主窗口,并在其中添加一个QCheckBox控件。

from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox import sys class MyWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('QCheckBox 示例') self.setGeometry(100, 100, 200, 100) # 设置窗口位置和大小 self.checkbox = QCheckBox('选项1', self) self.checkbox.move(50, 20) # 设置QCheckBox的位置 if __name__ == '__main__': app = QApplication([]) w = MyWidget() w.show() sys.exit(app.exec_()) 

这段代码创建了一个包含单个QCheckBox的简单窗口。

www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

设置默认选中状态

可以通过调用setChecked(True)setChecked(False)方法来设置QCheckBox的默认选中状态。

self.checkbox.setChecked(True) # 默认选中 

切换选中状态

toggle()方法用于切换QCheckBox的选中状态。如果控件当前是未选中的,调用toggle()后它会变为选中状态;如果控件当前是选中的,调用toggle()后它会变为未选中状态。

self.checkbox.toggle() # 切换选中状态 

绑定事件

QCheckBoxstateChanged信号可以绑定到一个槽函数上,以便在状态改变时执行特定的操作。

def checkboxChanged(self, state): if state == Qt.Checked: print("选项1被选中") elif state == Qt.Unchecked: print("选项1未被选中") # 绑定信号和槽 self.checkbox.stateChanged.connect(self.checkboxChanged) 

注意,这里的stateChanged信号传递的是Qt.CheckState枚举值(Qt.UncheckedQt.PartiallyCheckedQt.Checked),而不是布尔值。

实际应用案例

案例一:多选功能

在很多应用程序中,需要用户从一组选项中选择多个选项。这时,可以使用多个QCheckBox控件来实现。

from PyQt5.QtWidgets import QWidget, QCheckBox class MyMultiSelectWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('多选示例') self.setGeometry(100, 100, 300, 200) layout = QVBoxLayout(self) # 使用垂直布局管理器 self.checkbox1 = QCheckBox('选项1', self) self.checkbox2 = QCheckBox('选项2', self) self.checkbox3 = QCheckBox('选项3', self) layout.addWidget(self.checkbox1) layout.addWidget(self.checkbox2) layout.addWidget(self.checkbox3) # 可以在这里添加按钮或其他控件来触发选项的检查或处理 def checkAll(self): # 选中所有选项 self.checkbox1.setChecked(True) self.checkbox2.setChecked(True) self.checkbox3.setChecked(True) def uncheckAll(self): # 取消选中所有选项 self.checkbox1.setChecked(False) self.checkbox2.setChecked(False) self.checkbox3.setChecked(False) def getSelectedOptions(self): # 获取所有选中的选项 selected_options = [] if self.checkbox1.isChecked(): selected_options.append('选项1') if self.checkbox2.isChecked(): selected_options.append('选项2') if self.checkbox3.isChecked(): selected_options.append('选项3') return selected_options if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout from PyQt5.QtCore import Qt app = QApplication(sys.argv) widget = MyMultiSelectWidget() # 添加一个按钮来触发获取选中选项的操作 button = QPushButton('获取选中项', widget) button.clicked.connect(lambda: print(widget.getSelectedOptions())) # 如果需要,也可以添加全选和取消全选的按钮 all_button = QPushButton('全选', widget) all_button.clicked.connect(widget.checkAll) uncheck_button = QPushButton('取消全选', widget) uncheck_button.clicked.connect(widget.uncheckAll) # 布局调整,将按钮添加到界面中 layout = widget.layout() # 假设MyMultiSelectWidget的initUI中设置了layout layout.addWidget(button) layout.addWidget(all_button) layout.addWidget(uncheck_button) widget.show() sys.exit(app.exec_()) 

选中2,然后点击 获取选中项

注意:在上面的示例中,我假设MyMultiSelectWidgetinitUI方法中已经创建了一个布局(如QVBoxLayout),并且这个布局被存储为类的实例变量(例如self.layout)。然而,在提供的代码中,我直接在initUI方法中使用了局部变量layout。为了将按钮添加到布局中,你应该将layout设置为类的实例变量,或者在需要时重新获取它(例如,通过self.layout()方法,如果你有这样的方法的话)。但是,在这个简单的示例中,为了保持代码的清晰和简短,我将按钮直接添加到了已经存在的layout中,这在实际应用中可能需要你稍作调整。

另外,请注意,上面的代码示例中添加了一个全选按钮、一个取消全选按钮和一个获取选中项的按钮,以便用户可以通过图形界面与多选控件进行交互。这些按钮的点击事件分别连接到了checkAlluncheckAllgetSelectedOptions方法上,这些方法分别用于全选所有选项、取消全选所有选项和获取当前选中的选项列表。

案例二:三态支持的应用

在某些特殊情况下,你可能需要QCheckBox控件支持三态(选中、未选中、半选中)。这可以通过设置tristate属性为True来实现。

 # 0. 导入需要的包和模块 from PyQt5.Qt import * # 主要包含了我们常用的一些类, 汇总到了一块 import sys # 1. 创建一个应用程序对象 app = QApplication(sys.argv) # 2. 控件的操作 # 2.1 创建控件 window = QWidget() # 2.2 设置控件 #设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题 window.setWindowTitle("QCheckBox功能测试") #设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏 window.resize(500, 500) #创建多选框,加上快捷键,标题,父控件 cb = QCheckBox("&Python", window) #设置图标 cb.setIcon(QIcon("../../imgs/python-gui.png")) #设置图标大小 cb.setIconSize(QSize(60, 60)) cp = QCheckBox("&C++", window) #复选框三态支持 #支持三态,需要设置下 setTristate(bool=True) #Qt.Unchecked 未选中 0 #Qt.PartiallyChecked 部分选中 1 #Qt.Checked 真的被选中 2 #查看是否设置了三态 isTristate() #设置支持三态 # cp.setTristate(True) #查看是否支持三态 print(cp.isTristate()) #三态中,设置选中状态 cp.setCheckState(Qt.PartiallyChecked) #查看选中状态 print("选中状态",cp.checkState()) # 2.3 展示控件 window.show() # 3. 应用程序的执行, 进入到消息循环 sys.exit(app.exec_()) 

可以看到c++处于部分选中状态

www.zeeklog.com - 【python】PyQt5中多选按钮QCheckBox的详细用法教程与实战案例

总结

总之,QCheckBox是PyQt5中一个非常有用的控件,它允许用户从一组选项中选择一个或多个选项。通过结合使用多个QCheckBox控件和信号槽机制,你可以轻松地实现复杂的用户交互功能。

Read more

ollama v0.17.0 更新:OpenClaw 一键自动安装、Web 搜索支持、全新 Context 动态分配与 Tokenizer 性能大幅优化!

2026 年 2 月 24 日,Ollama 发布了全新的 v0.17.0 版本。这一次更新可谓意义重大,不仅引入了全新的 OpenClaw 自动化集成与安装能力,还针对核心 Tokenizer 性能、VRAM 动态上下文分配、系统配置迁移逻辑、Web 搜索插件 等功能进行了深层次优化。这是一次面向 AI 模型本地化与云端融合、性能与易用性双提升的版本升级。 本文将全面解析 Ollama v0.17.0 的更新亮点、底层代码变化及其背后的设计逻辑,帮助开发者和高级用户快速理解这一版本的重要意义。 一、版本概览 版本号: v0.17.0 发布日期: 2026 年 2 月 24 日

By Ne0inhk
网站检测不用等! Web-Check+cpolar让异地协作查漏洞更高效

网站检测不用等! Web-Check+cpolar让异地协作查漏洞更高效

文章目录 * 前言 * 1.关于Web-Check * 2.功能特点 * 3.安装Docker * 4.创建并启动Web-Check容器 * 5.本地访问测试 * 6.公网远程访问本地Web-Check * 7.内网穿透工具安装 * 8.创建远程连接公网地址 * 9.使用固定公网地址远程访问 前言 Web-Check 是一款全方位的网站诊断工具,能检测 IP 信息、SSL 证书、DNS 记录、开放端口等关键数据,适合开发者做性能优化、运维人员做安全巡检,还能帮安全测试人员识别潜在风险。它的优点是结果可视化强,所有数据在仪表盘分类呈现,不用手动整合多工具报告,省时又清晰。 用 Web-Check 时发现,检测前最好确认目标网站能正常访问,否则可能出现数据不全;另外,生成的报告里有不少专业术语,新手可以先查基础概念(比如 SSL 链、DNS

By Ne0inhk
用 龙虾10 分钟搞定 C 语言 + 前端实训?我试了,真香!

用 龙虾10 分钟搞定 C 语言 + 前端实训?我试了,真香!

🚀 用龙虾10 分钟搞定 C 语言 + 前端实训?我试了,真香! 一句话总结:选对模型 + 写好提示词,让“龙虾”帮你从零生成可运行的 C 语言成绩管理系统 + 全栈博客前端项目,连实训报告都自动生成! 大家好,我是 VON。最近“AI 编程助手”火出圈,但很多人还在手动敲代码、调 Bug、写报告……其实,只要用对工具,一个指令就能完成整套高校实训作业! 今天我就带大家实测:如何用 AI 智能体(俗称“龙虾”) 快速搞定两类典型课程设计—— ✅ C 语言学生成绩管理系统 ✅ React 全栈个人博客系统 全程无需打开 IDE,甚至不用看一行代码!👇 🔧 第一步:选对模型,效率翻倍! 智能体的输出质量,70%

By Ne0inhk
从vw/vh到clamp(),前端响应式设计的痛点与进化

从vw/vh到clamp(),前端响应式设计的痛点与进化

目录 从vw/vh到clamp(),前端响应式设计的痛点与进化 一、原生响应式设计的痛点 1、使用 vw/vh/% 的蜜月期与矛盾点 2、以 px+@media 为主轴实现多端样式兼容 二、clamp():响应式设计的新思路 1、clamp() 是什么? 2、优势分析 三、实际应用场景示例 1、标题文字大小 2、布局容器宽度 3、按钮与间距 4、配合calc()实现更灵活布局 四、clamp() 的局限与思考 五、结语 从vw/vh到clamp(),前端响应式设计的痛点与进化 一、原生响应式设计的痛点 1、使用 vw/vh/% 的蜜月期与矛盾点

By Ne0inhk