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

标签 python multithreading qt pyqt pyqt4

我有一个要求,我的执行将在线程中发生,我想从该线程向主类发出信号。下面是我的示例代码片段,我在其中创建了 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_())

关于python - 如何从一个类发出 Qtsignal,从而导致在 pyqt 中从其父类发出 Qtsignal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898767/

相关文章:

python - PyCall无法使用pipenv版本的python InitError :Incompatible `libpython` detected

android - 从服务中的线程发送 toast

windows - 为什么 time.sleep() 在 Windows 中这么慢?

qt - 在 QGraphicsView 的 ScrollHandDrag 模式下,如何停止 QGraphicsItems 在场景中的移动?

python - 检测对象是否可重复迭代

python - py2exe:忽略跳过存档

python - 在类实例之间创建循环引用?

python - 具有并发用户和大量数据处理的交互式 Web 应用程序的架构

c++ - 非阻塞 worker - 中断文件复制

python - 加载带有屏幕截图框架的页面