QThread.isFinished在连接到finished()信号的槽中返回False

时间:2013-12-21 22:21:27

标签: python qt pyqt4 pyside qthread

我有一个发出finish()信号的QThread,但是它的isFinished()返回False。 这是为什么?如何知道isFinished何时会开始返回True?

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:False

在另一个SO问题中回答(QThread emits finished() signal but isRunning() returns true and isFinished() returns false)表明它应该是这样的:

  
      
  1. 此时,isFinished()应该开始返回true并且isRunning()为false。
  2.   
  3. 内部发出finished()信号。
  4.   
  • py 2.7.4
  • PySide 1.1.2
  • Qt 4.8.2

也用PyQt4测试

1 个答案:

答案 0 :(得分:1)

原来这是qt(https://bugreports.qt-project.org/browse/QTBUG-30251)中的一个错误,在Qt 4.8.5中得到修复。 PySide 1.2.1附带Qt4.8.5。