简体   繁体   English

每次点击pyqt5时,按钮标签都会改变

[英]Making Push button label change every click on pyqt5

I'm building a gui using pyqt5.我正在使用 pyqt5 构建一个 gui。 I'm trying to figure out how to change a button every click:我试图弄清楚如何在每次点击时更改按钮:

in my code I have a push button called Chuck_Release.在我的代码中,我有一个名为 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.基本上,我希望它在某些条件下显示“chuck”或“release”,但在那之前我只希望它每次点击都改变它的标题,起始状态为“chuck”,但我似乎无法理解出了怎么做。

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 :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_())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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