Skip to main content
 首页 » 编程设计

python之如何从一个类发出 Qtsignal,从而导致在 pyqt 中从其父类发出 Qtsignal

2025年05月04日7tuyile006

我有一个要求,我的执行将在线程中发生,我想从该线程向主类发出信号。下面是我的示例代码片段,我在其中创建了 MainClass 的实例并将其分配给 temp。其中 MainClass 在内部连接到线程 Thread1 ,实际工作将在该线程发生。当信号从 Thread1 发出时,我希望执行从 temp

连接的 signalcalled 定义

代码片段

class Thread1(QtCore.QThread): 
 
    ThreadSignal = QtCore.pyqtSignal(str) 
 
    While True: 
 
        #some statments 
        if Condition: 
            ThreadSignal.emit('Yes') 
        else: 
            ThreadSignal.emit('No') 
 
class MainClass(QtCore.QObject): 
 
    MainSignal = QtCore.pyqtSignal(str) 
 
    Testinstance = Thread1() 
 
def signalcalled(s): 
 
    print s 
 
if __name__=='__main__': 
    app = AtGui.QApplication(sys.argv) 
    temp = MainClass() 
    temp.MainSignal.connect(signalcalled) 
    sys.exit(app.exec()_) 

请您参考如下方法:

这应该有效:

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 
 
from PyQt4 import QtCore, QtGui 
 
class myThread(QtCore.QThread): 
    threadSignal = QtCore.pyqtSignal(str) 
 
    def __init__(self, parent=None): 
        super(myThread, self).__init__(parent) 
 
    def run(self): 
        while True: 
            if True: 
                self.threadSignal.emit('Yes') 
 
            else: 
                self.threadSignal.emit('No') 
 
            break 
 
class myMainClass(QtCore.QObject): 
    mainSignal = QtCore.pyqtSignal(str) 
 
    def __init__(self, parent=None): 
        super(myMainClass, self).__init__(parent) 
 
        testInstance = myThread(self) 
        testInstance.threadSignal.connect(self.mainSignal.emit) 
        testInstance.start() 
 
def signalcalled(s): 
    print s 
 
if __name__ == "__main__": 
    import  sys 
 
    app = QtGui.QApplication(sys.argv) 
    main = myMainClass() 
    main.mainSignal.connect(signalcalled) 
    sys.exit(app.exec_())