如何从QThread类调用按钮

问题描述

这是我的代码


我想调用按钮并从QThread类更改其颜色,因为它一直崩溃,并且没有给出任何类型的错误
有人知道如何解决这个问题吗?


from PyQt5 import QtCore,QtGui,QtWidgets

    from PyQt5.QtWidgets import QMessageBox
    from PyQt5.QtCore import Qt,QThread,pyqtSignal
    import  time
    import sys
    
    
    
    class YourThreadName(QThread):
    
        def __init__(self1):
            QThread.__init__(self1)
    
        def __del__(self1):
            self1.wait()
    
        def run(self1):
            #global var
            for var in range(10,-1):
                print(var)
                time.sleep(1)
                self1.ui = Ui_Form()
            #################################
                #self1.connect(Ui_Form,QtCore.SIGNAL) # This fuction work
                self1.ui.ChangeColor()  # This fuction dosen't work
                
    
    
    class Ui_Form(object):
       
        def setupUi(self,Form):
            Form.setobjectName("Form")
            Form.resize(725,670)
            self.pushButton = QtWidgets.QPushButton(Form)
            self.pushButton.setGeometry(QtCore.QRect(230,370,93,28))
            self.pushButton.setobjectName("pushButton")
            self.pushButton_2 = QtWidgets.QPushButton(Form)
            self.pushButton_2.setGeometry(QtCore.QRect(490,28))``
            self.pushButton_2.setobjectName("pushButton_2")
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
    
            self.pushButton.clicked.connect(lambda: self.ChangeColor())
            self.pushButton_2.clicked.connect(lambda : self.startTh())
    
    
        def startTh(self):
    
            self.myThread = YourThreadName()
            self.myThread.start()
    
    
        def ChangeColor(self):
            self.pushButton.setStyleSheet("background-color: rgb(255,0)")
    
        def retranslateUi(self,Form):
            _translate = QtCore.QCoreApplication.translate
            Form.setwindowTitle(_translate("Form","Form"))
            self.pushButton.setText(_translate("Form","PushButton"))
            self.pushButton_2.setText(_translate("Form","PushButton"))
    
    
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        Form = QtWidgets.QWidget()
        ui = Ui_Form()
        ui.setupUi(Form)
        Form.show()
        sys.exit(app.exec_())

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)