简体   繁体   中英

Making Push button label change every click on pyqt5

I'm building a gui using pyqt5. I'm trying to figure out how to change a button every click:

in my code I have a push button called Chuck_Release. Basically, I want it to show either "chuck" or "release" under some conditions, but until then I just want it to change it's title every click, with the starting state of "chuck", but I can't seem to figure out how to do it.

This is my code:

import sys, time
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(685, 459)
        self.exitbtn = QtWidgets.QPushButton(Dialog)
        self.exitbtn.setGeometry(QtCore.QRect(608, 431, 75, 23))
        self.exitbtn.setObjectName("exitbtn")
        self.Typelist = QtWidgets.QComboBox(Dialog)
        self.Typelist.setGeometry(QtCore.QRect(50, 70, 59, 20))
        self.Typelist.setObjectName("Typelist")
        self.Typelist.addItem("")
        self.Typelist.addItem("")
        self.Typelist.addItem("")
        self.Chuck_Release = QtWidgets.QPushButton(Dialog)
        self.Chuck_Release.setGeometry(QtCore.QRect(50, 100, 75, 23))
        self.Chuck_Release.setObjectName("Chuck_Release")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 20, 37, 16))
        self.label.setObjectName("label")
        self.textBrowser = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser.setGeometry(QtCore.QRect(25, 160, 511, 192))
        self.textBrowser.setObjectName("textBrowser")
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(50, 40, 133, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.Runbtn = QtWidgets.QPushButton(Dialog)
        self.Runbtn.setGeometry(QtCore.QRect(420, 60, 91, 61))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.Runbtn.setFont(font)
        self.Runbtn.setObjectName("Runbtn")
        self.getSerial = QtWidgets.QPushButton(Dialog)
        self.getSerial.setGeometry(QtCore.QRect(200, 40, 75, 23))
        self.getSerial.setObjectName("getSerial")

        self.exitbtn.clicked.connect(self.exitclicked)
        self.Chuck_Release.clicked.connect(self.chuckclicked)


        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "NEW GUI"))
        self.exitbtn.setText(_translate("Dialog", "Exit"))
        self.Typelist.setItemText(0, _translate("Dialog", "Type 1"))
        self.Typelist.setItemText(1, _translate("Dialog", "Type2"))
        self.Typelist.setItemText(2, _translate("Dialog", "Type 3"))
        self.Chuck_Release.setText(_translate("Dialog", "Chuck"))
        self.label.setText(_translate("Dialog", "Serial #"))
        self.Runbtn.setText(_translate("Dialog", "Run"))

        self.getSerial.setText(_translate("Dialog", "Enter"))

    def exitclicked(self,Dialog):
        sys.exit()

    def chuckclicked(self,Dialog):
        self.Chuck_Release.setText("Release")     ***this is my function for chuckrelease push button***


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

I would love if someone could explain me the process of how to get it done. Thanks! :D

checkable : bool

This property holds whether the button is checkable

By default, the button is not checkable.


checked : bool

This property holds whether the button is checked

Only checkable buttons can be checked. By default, the button is unchecked.

import sys, time
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(685, 459)
        self.exitbtn = QtWidgets.QPushButton(Dialog)
        self.exitbtn.setGeometry(QtCore.QRect(608, 431, 75, 23))
        self.exitbtn.setObjectName("exitbtn")
        self.Typelist = QtWidgets.QComboBox(Dialog)
        self.Typelist.setGeometry(QtCore.QRect(50, 70, 59, 20))
        self.Typelist.setObjectName("Typelist")
        self.Typelist.addItem("")
        self.Typelist.addItem("")
        self.Typelist.addItem("")
        self.Chuck_Release = QtWidgets.QPushButton(Dialog)
        self.Chuck_Release.setGeometry(QtCore.QRect(50, 100, 75, 23))
        self.Chuck_Release.setObjectName("Chuck_Release")
        
        self.Chuck_Release.setCheckable(True)                               # +++        
        
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(50, 20, 37, 16))
        self.label.setObjectName("label")
        self.textBrowser = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser.setGeometry(QtCore.QRect(25, 160, 511, 192))
        self.textBrowser.setObjectName("textBrowser")
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(50, 40, 133, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.Runbtn = QtWidgets.QPushButton(Dialog)
        self.Runbtn.setGeometry(QtCore.QRect(420, 60, 91, 61))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.Runbtn.setFont(font)
        self.Runbtn.setObjectName("Runbtn")
        self.getSerial = QtWidgets.QPushButton(Dialog)
        self.getSerial.setGeometry(QtCore.QRect(200, 40, 75, 23))
        self.getSerial.setObjectName("getSerial")

        self.exitbtn.clicked.connect(self.exitclicked)
        self.Chuck_Release.clicked.connect(self.chuckclicked)


        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "NEW GUI"))
        self.exitbtn.setText(_translate("Dialog", "Exit"))
        self.Typelist.setItemText(0, _translate("Dialog", "Type 1"))
        self.Typelist.setItemText(1, _translate("Dialog", "Type2"))
        self.Typelist.setItemText(2, _translate("Dialog", "Type 3"))
        self.Chuck_Release.setText(_translate("Dialog", "Chuck"))
        self.label.setText(_translate("Dialog", "Serial #"))
        self.Runbtn.setText(_translate("Dialog", "Run"))

        self.getSerial.setText(_translate("Dialog", "Enter"))

    def exitclicked(self,Dialog):
        sys.exit()

    def chuckclicked(self,Dialog):
        # print(self.Chuck_Release.isChecked())
        if self.Chuck_Release.isChecked():                              # +++
            self.Chuck_Release.setText("Release")    
        else: 
            self.Chuck_Release.setText("Chuck")
            
            
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM