2013-12-21 12 views
3

我有一個發出finished()信號的QThread,但它的isFinished()返回False。 這是爲什麼?如何知道什麼時候isFinished將開始返回True?QThread.isFinished在連接到finished()信號的槽中返回False

from __future__ import print_function 
from PySide import QtCore, QtGui 

qapp = QtGui.QApplication([]) 
worker_thread = QtCore.QThread() 
worker_thread.start() 
worker_thread.quit() 

def fin(): 
    print('isFinished:', worker_thread.isFinished()) 
worker_thread.finished.connect(fin) 
QtCore.QTimer.singleShot(200, qapp.quit) 
qapp.exec_() 

有時它返回true,但大部分時間它輸出:

isFinished:假

答案在另一個SO問題(QThread emits finished() signal but isRunning() returns true and isFinished() returns false)認爲它應該是這樣的:

  1. 此時,isFinished()應該開始返回true並且isRunning()爲false。
  2. 內部發出完成的()信號。
  • PY 2.7.4
  • PySide 1.1.2
  • 的Qt 4.8.2

也與PyQt4的測試

回答