0

次のコードがすぐに終了する理由を理解しようとしていますが、2 番目のオブジェクトではなくメイン コンテキストでスレッドを作成すると機能しますか?

from PyQt4 import QtCore
import time
import sys

class SomeObject(QtCore.QObject):

    finished = QtCore.pyqtSignal()

    def longRunning(self):
        count = 0
        while count < 5:
            time.sleep(1)
            print "Increasing"
            count += 1
        self.finished.emit()

class SecondObject(QtCore.QObject):
    def __init__(self, app):
        QtCore.QObject.__init__(self)
        objThread = QtCore.QThread()
        obj = SomeObject()
        obj.moveToThread(objThread)
        obj.finished.connect(objThread.quit)
        objThread.started.connect(obj.longRunning)
        objThread.finished.connect(app.exit)
        objThread.start()

def usingMoveToThread():
    app = QtCore.QCoreApplication([])
    SecondObject(app)
    sys.exit(app.exec_())

if __name__ == "__main__":
    usingMoveToThread()

助けてくれてありがとう!

4

1 に答える 1

1

問題が見つかりました。どうやら、新しいスレッドの参照を保持する必要があるようです。そうしないと、アプリケーションが終了します...

于 2013-01-04T13:25:53.950 に答える