PyQt5 – Combo Box with check-able items

In this article we will see how we can make a combo box who have check-able items. By default when we create a combo box its items are not check-able i.e we can select any one item at a time although we can create such combo box by editing the combo box class. Below is the representation of how check-able combo box look like.
In order to do this we have to make a new editable combo box class which inherits the combo box and adds a new feature of check able combo box, below is the syntax of new class
class CheckableComboBox(QComboBox):
    def __init__(self, parent = None):
        super(CheckableComboBox, self).__init__(parent)
        self.view().pressed.connect(self.handleItemPressed)
        self.setModel(QStandardItemModel(self))
    def handleItemPressed(self, index):
        item = self.model().itemFromIndex(index)
        if item.checkState() == Qt.Checked:
            item.setCheckState(Qt.Unchecked)
        else:
            item.setCheckState(Qt.Checked)
Below is the implementation –
| # importing libraries fromPyQt5.QtWidgets import*fromPyQt5 importQtCore, QtGui fromPyQt5.QtGui import*fromPyQt5.QtCore import*importsys  # new check-able combo box classCheckableComboBox(QComboBox):          # constructor     def__init__(self, parent =None):         super(CheckableComboBox, self).__init__(parent)         self.view().pressed.connect(self.handleItemPressed)         self.setModel(QStandardItemModel(self))      # when any item get pressed     defhandleItemPressed(self, index):                  # getting the item         item =self.model().itemFromIndex(index)                  # checking if item is checked         ifitem.checkState() ==Qt.Checked:                          # making it unchecked             item.setCheckState(Qt.Unchecked)                      # if not checked         else:             # making the item checked             item.setCheckState(Qt.Checked)  classWindow(QMainWindow):      def__init__(self):         super().__init__()          # setting title         self.setWindowTitle("Python ")          # setting geometry         self.setGeometry(100, 100, 600, 400)          # calling method         self.UiComponents()          # showing all the widgets         self.show()      # method for widgets     defUiComponents(self):                  # creating a check-able combo box object         self.combo_box =CheckableComboBox(self)          # setting geometry of combo box         self.combo_box.setGeometry(200, 150, 150, 30)          # geek list         geek_list =["Sayian", "Super Sayian",                      "Super Sayian 2", "Super Sayian B"]          # adding list of items to combo box         self.combo_box.addItems(geek_list)   # create pyqt5 app App =QApplication(sys.argv)  # create the instance of our Window window =Window()  window.show()  # start the app sys.exit(App.exec())  | 
Output :
 
				 
					



