PYQT5 多选下拉列表框
生活随笔
收集整理的這篇文章主要介紹了
PYQT5 多选下拉列表框
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 多选下拉列表框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python实现一个简单数据库查询接口编
- 下一篇: 奉劝那些想学编程的人