Open In App

PyQt5 QCheckBox

Last Updated : 29 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Check Box is one of the PyQt5 widgets used to select one or more choices from multiple options. It is a small box which gets checked when selected, else remains blank. For adding Check box in application QCheckBox class is used. Example: A window asking the user to select all the programming languages user knows. After each selection or deselection by the user, the message gets updated which contains the list of all the languages selected by him/her like: “You know c, c++ …”. Below is the code: 

Python3




import sys
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.resize(476, 308)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
 
        # Languages are not selected initially hence initialised to zero.
        self.langs ={'c':0, 'cpp':0, 'java':0, 'python':0}
         
        # For showing message
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(140, 80, 191, 20))
         
        self.checkBox_c = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_c.setGeometry(QtCore.QRect(170, 120, 81, 20))
        self.checkBox_c.stateChanged.connect(self.checkedc)
         
        self.checkBox_cpp = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_cpp.setGeometry(QtCore.QRect(170, 140, 81, 20))
        self.checkBox_cpp.stateChanged.connect(self.checkedcpp)
         
        self.checkBox_java = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_java.setGeometry(QtCore.QRect(170, 160, 81, 20))
        self.checkBox_java.stateChanged.connect(self.checkedjava)
         
        self.checkBox_py = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_py.setGeometry(QtCore.QRect(170, 180, 81, 20))
        self.checkBox_py.stateChanged.connect(self.checkedpy)
         
        MainWindow.setCentralWidget(self.centralwidget)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
         
    def checkedc(self, checked):
        if checked:
            self.langs['c']= 1
        else:
            self.langs['c']= 0
        self.show()
 
    def checkedcpp(self, checked):
        if checked:
            self.langs['cpp']= 1
        else:
            self.langs['cpp']= 0   
        self.show()
             
    def checkedjava(self, checked):
        if checked:
            self.langs['java']= 1
        else:
            self.langs['java']= 0
        self.show()
             
    def checkedpy(self, checked):
        if checked:
            self.langs['python']= 1
        else:
            self.langs['python']= 0
        self.show()           
     
    # For showing updated list of all selected languages.        
    def show(self):
        checkedlangs =', '.join([key for key in self.langs.keys()
                                         if self.langs[key]== 1])
         
        # Updates message having list of all selected languages.
        self.label.setText("You know "+checkedlangs)
     
         
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
 
        self.label.setText(_translate("MainWindow", "Select your preferred language"))
        self.checkBox_c.setText(_translate("MainWindow", "C"))
        self.checkBox_cpp.setText(_translate("MainWindow", "C++"))
        self.checkBox_java.setText(_translate("MainWindow", "Java"))
        self.checkBox_py.setText(_translate("MainWindow", "Python"))
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
   
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())


Output: Message showing user’s selected languages. Message will get updated after each selection or deselection by the user.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads