2

実行がスレッドで行われるという要件があり、そのスレッドからメイン クラスにシグナルを送信したいと考えています。MainClass以下は私のコードスニペットの例ですtemp。実際の作業が行われるMainClassスレッドに内部的に接続されています。Thread1信号が発信されたときに、接続されている定義を実行しThread1たいsignalcalledtemp

コードスニペット

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

2 に答える 2

1

これは機能するはずです:

#!/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_())
于 2012-12-16T05:47:28.830 に答える
0
class Thread1(QtCore.QThread):

    ThreadSignal = QtCore.pyqtSignal(str)

    def __init__(self):
        super(myThread, self).__init__()

    def run(self):

        While True:

            #some statments
            if Condition:
                ThreadSignal.emit('Yes')
            else:
                ThreadSignal.emit('No')

class MainClass(QtCore.QObject):

    MainSignal = QtCore.pyqtSignal(str)

    def __init__(self):

        super(myThread, self).__init__()

        Testinstance = Thread1()
        Testinstance.ThreadSignal.connect(MainSignal)
        Testinstance.start()

def signalcalled(s):

    print s

if __name__=='__main__':
    app = AtGui.QApplication(sys.argv)
    temp = MainClass()
    temp.MainSignal.connect(signalcalled)
    sys.exit(app.exec()_)
于 2012-12-17T05:48:31.997 に答える