在使用pyqt5进行界面开发的时候,常用的是下拉框(QComboBox)、复选框(QCheckBox),但是在某些时候,需要在下拉菜单选择时进行多选。

    1. from PyQt5 import QtGui, QtCore, QtWidgets
    2. import sys, os
    3. # subclass
    4. class CheckableComboBox(QtWidgets.QComboBox):
    5. # once there is a checkState set, it is rendered
    6. # here we assume default Unchecked
    7. def addItem(self, item):
    8. super(CheckableComboBox, self).addItem(item)
    9. item = self.model().item(self.count()-1,0)
    10. item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
    11. item.setCheckState(QtCore.Qt.Unchecked)
    12. def itemChecked(self, index):
    13. item = self.model().item(index,0)
    14. return item.checkState() == QtCore.Qt.Checked
    15. # the basic main()
    16. app = QtWidgets.QApplication(sys.argv)
    17. dialog = QtWidgets.QMainWindow()
    18. mainWidget = QtWidgets.QWidget()
    19. dialog.setCentralWidget(mainWidget)
    20. ComboBox = CheckableComboBox(mainWidget)
    21. for j in range(6):
    22. ComboBox.addItem("Check Item " + str(j))
    23. '''
    24. cnt = ComboBox.count()
    25. for i in range(cnt):
    26. ret = ComboBox.itemChecked(i)
    27. if ret:
    28. print(ComboBox.itemText(i))'''
    29. dialog.show()
    30. sys.exit(app.exec_())

    引用:
    1. Флажки в Combobox с использованием PyQt