from PyQt5.QtWidgets import QComboBox, QLineEdit, QListWidget, QCheckBox, QListWidgetItem, QApplication
from PyQt5.QtCore import pyqtSignal
import sys"""
1.将show函数改成show0
2.增加changeitemlist函数
3.增加信号signa
"""class ComboCheckBox(QComboBox):signa = pyqtSignal(list)def __init__(self, items):  # items==[str,str...]super(ComboCheckBox, self).__init__()self.items = itemsself.items.insert(0, '全部')self.row_num = len(self.items)self.Selectedrow_num = 0self.qCheckBox = []self.qLineEdit = QLineEdit()self.qLineEdit.setReadOnly(True)self.qListWidget = QListWidget()self.addQCheckBox(0)self.qCheckBox[0].stateChanged.connect(self.All)for i in range(1, self.row_num):self.addQCheckBox(i)self.qCheckBox[i].stateChanged.connect(self.show0)self.setModel(self.qListWidget.model())self.setView(self.qListWidget)self.setLineEdit(self.qLineEdit)self.setMaxVisibleItems(100)  # 避免滑条的出现引起滑条偷吃标签的问题def addQCheckBox(self, i):self.qCheckBox.append(QCheckBox())qItem = QListWidgetItem(self.qListWidget)self.qCheckBox[i].setText(self.items[i])self.qListWidget.setItemWidget(qItem, self.qCheckBox[i])def Selectlist(self):Outputlist = []for i in range(1, self.row_num):if self.qCheckBox[i].isChecked() == True:Outputlist.append(self.qCheckBox[i].text())self.Selectedrow_num = len(Outputlist)return Outputlistdef show0(self):show0 = ''Outputlist = self.Selectlist()self.signa.emit(Outputlist)self.qLineEdit.setReadOnly(False)self.qLineEdit.clear()for i in Outputlist:show0 += i + ';'if self.Selectedrow_num == 0:self.qCheckBox[0].setCheckState(0)elif self.Selectedrow_num == self.row_num - 1:self.qCheckBox[0].setCheckState(2)else:self.qCheckBox[0].setCheckState(1)self.qLineEdit.setText(show0)self.qLineEdit.setReadOnly(True)def All(self, zhuangtai):if zhuangtai == 2:for i in range(1, self.row_num):self.qCheckBox[i].setChecked(True)elif zhuangtai == 1:if self.Selectedrow_num == 0:self.qCheckBox[0].setCheckState(2)elif zhuangtai == 0:self.clear()def clear(self):for i in range(self.row_num):self.qCheckBox[i].setChecked(False)def changeitemlist(self, itemlist):self.items = itemlistself.items.insert(0, '全部')self.row_num = len(self.items)self.Selectedrow_num = 0self.qCheckBox = []self.qLineEdit = QLineEdit()self.qLineEdit.setReadOnly(True)self.qListWidget = QListWidget()self.addQCheckBox(0)self.qCheckBox[0].stateChanged.connect(self.All)for i in range(1, self.row_num):self.addQCheckBox(i)self.qCheckBox[i].stateChanged.connect(self.show0)self.setModel(self.qListWidget.model())self.setView(self.qListWidget)self.setLineEdit(self.qLineEdit)if __name__ == "__main__":app = QApplication(sys.argv)mainWindow = ComboCheckBox(['装置ID', '传感器ID', "采样时间", '装置电源电压', "信号强度",'装置ID', '传感器ID', "采样时间", '装置电源电压', "信号强度"])def solt11(x):print(x)mainWindow.signa.connect(solt11)mainWindow.show()sys.exit(app.exec_())

原始代码来源于:https://blog.csdn.net/LJX4ever/article/details/78039318

PYQT5 多选下拉列表框相关推荐

  1. Android点选下拉列表框选项,获取选项内容

    的作者做的一个项目,通过app来监测设备是否在线状态,这时就需要实现分别查询"在线"."离线"."全部"三种选项的设备情况.也就是要能实现根 ...

  2. Python tkinter自定义多选下拉列表框(带滚动条、全选)

    Python tkinter自定义多选下拉列表框 1.demo.py文件 2.ComBoPicker.py文件 3.ComBoPicker1.py文件 4.效果 上一篇文章,很多小伙伴不知道怎么加全选 ...

  3. Python tkinter自定义多选下拉列表框

    Python tkinter 自定义多选下拉列表框 困扰了我好久,终于在stackoverflow上找到了答案. 废话不多说,直接上代码! 加滚动条和全选传送门 :Python tkinter自定义多 ...

  4. easyui tree复选框是否打钩状态_实战PyQt5: 010-复选框控件QCheckBox

    复选框QCheckBox简介 QCheckBox 复选框,通常用于表示可以启用或禁用应用中的功能. QCheckBox中的常用方法: setText(): 设置复选框的显示文本: setEnabled ...

  5. PyQt5 复选框(勾选框)

    -- coding: utf-8 -- import sys from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox from PyQ ...

  6. PyQt5 - 多选框

    代码 # -*- coding: utf-8 -*- # @Author : zbzimport sys import timefrom PyQt5.QtWidgets import * from P ...

  7. pyqt5 qlabel无法显示图片_实战PyQt5: 011-单选框控件QRadioButton

    单选框QRadioButton简介 QRadioButton为单选按钮, 可以选中(打开)或者取消选中(关闭).在一组单选按钮中,一次只能选中其中的一个按钮.选中或者取消选中QRadioButton, ...

  8. html下拉式列表框多选,基于jQuery UI的多项选择下拉列表框组件

    jquery.multiselect.js是一款基于jQuery UI的多项选择下拉列表框组件.该下拉列表功能强大,可以实现多选和单选,可制作打开和关闭下拉框时的炫酷动画效果,提供丰富的回调函数和其它 ...

  9. Matplotlib pyplot嵌入PYQT5的实战与反思

    '''第一次使用csdn的博客内容,写的有问题的地方以后再行更改''' 更新 2019/4/26 20:56 更新 2019/5/28 01:11 更新刷新界面的方法,详见Axes3d部分. 最近因为 ...

最新文章

  1. 接口入参形式_某小公司RESTful、共用接口、前后端分离、接口约定的实践
  2. libvirt 启动 qemu 的过程
  3. Java Servlet和JSP教程
  4. 2008年汶川大地震中的SAP成都研究院
  5. lightgbm 保存模型 过大_一个例子读懂LightGBM的模型文件
  6. shiro学习(7):shiro连接数据库 方式二
  7. linux ntp手动授时,关于我校NTP授时服务的使用说明
  8. 数据库连接串你知道多少
  9. 软件构建设计图_游戏设计如何帮助您构建更好的软件
  10. 郑州轻工业大学c语言考试题库,2016年郑州轻工业学院计算机与通信工程学院C语言程序设计考研复试题库...
  11. 电子邮件如何追溯到他们的源IP地址
  12. 脱机外挂制作完全版(制作原理与实现技术)
  13. 所有地区身份证开头(校验用户填写身份信息)
  14. 什么是“好”系统呢?
  15. 小工具,大作用:教你如何利用EXCEL函数LINEST做回归分析
  16. 根证书的有效期与服务器SSL证书一样长吗?
  17. [深度学习][原创]使用labelImg+yolov5完成所有slowfast时空动作检测项目-训练测试篇
  18. 直播预告| 清华CoAI小组——郑银河、刘劼西
  19. listview的属性
  20. 读书笔记之富爸爸穷爸爸

热门文章

  1. 海南电网全力支持新能源发展
  2. C# 生成编号的方法
  3. 【转】C# 中的委托和事件
  4. iOS Assigning to 'idXXXDelegate' from incompatible type 'BViewController *__strong'
  5. 口袋中的xmind如何添加优先等级图标
  6. 计算机视觉之一:特征检测
  7. ubuntu server搭建svn server
  8. [转载] 七龙珠第一部——第121话 悟空最大的危机
  9. linux /etc/rc.d/目录的详解
  10. windows 下Android的开发准备