了解qthread何时完成

pag*_*tti 1 qt pyqt qthread

我学习Qthread.当qthread发出信号完成时我很困惑.退出运行功能时信号是否完成?

class TestThread(QtCore.QThread):
         customSignal = QtCore.pyqtSignal(['QString'])

         def __init__(self):
            QtCore.QThread.__init__(self)

         def run(self):
            print 'some code in run functions... '
            self.customSignal.emit('OK')
            print 'after this istruction qthread emit instantly finished signal?'
Run Code Online (Sandbox Code Playgroud)

在运行函数中,我发出被其他类拦截的自定义信号.在其他类中,我收到一个信号,我还检查Qthread是否为runnig:

     print 'TestThread is running? - ', self.myTestTh.isRunning()
Run Code Online (Sandbox Code Playgroud)

有时它打印真!因此,当退出运行功能时Qthread似乎没有立即完成所以,我是否可以拦截完成的信号以确保Qthread没有运行?

Chr*_*ris 6

QThread作为一个finished()信号,如果你想在线程实际退出时收到通知你可以收听.

你也可以这样做:

myThread.quit();
myThread.wait();
Run Code Online (Sandbox Code Playgroud)

调用wait()将阻塞,直到您的线程正确完成.