在使用pyqt5进行界面开发的时候,常用的是下拉框(QComboBox)、复选框(QCheckBox),但是在某些时候,需要在下拉菜单选择时进行多选。
from PyQt5 import QtGui, QtCore, QtWidgetsimport sys, os# subclassclass CheckableComboBox(QtWidgets.QComboBox):# once there is a checkState set, it is rendered# here we assume default Uncheckeddef addItem(self, item):super(CheckableComboBox, self).addItem(item)item = self.model().item(self.count()-1,0)item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)item.setCheckState(QtCore.Qt.Unchecked)def itemChecked(self, index):item = self.model().item(index,0)return item.checkState() == QtCore.Qt.Checked# the basic main()app = QtWidgets.QApplication(sys.argv)dialog = QtWidgets.QMainWindow()mainWidget = QtWidgets.QWidget()dialog.setCentralWidget(mainWidget)ComboBox = CheckableComboBox(mainWidget)for j in range(6):ComboBox.addItem("Check Item " + str(j))'''cnt = ComboBox.count()for i in range(cnt):ret = ComboBox.itemChecked(i)if ret:print(ComboBox.itemText(i))'''dialog.show()sys.exit(app.exec_())
