python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
我有一个python控制台脚本,我想添加一个基本状态窗口,所以在不了解pyqt的情况下,我添加了一个窗口。如果我从主线程启动pyqt,它会阻塞其他所有东西,所以我从另一个线程启动它。好几个月来,它一直运行得很好,但我只是注意到一个警告(不知道我以前是怎么错过的):
WARNING: QApplication was not created in the main() thread.我想知道这可能会导致什么问题。在
这是我使用的代码的精简版本,只是更新了窗口标题栏:from PyQt4 import QtGui, QtCore
import threading
import sys
from time import sleep
class MainWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(MainWidget, self).__init__(parent)
self.setWindowTitle(statusLine)
self.timer = QtCore.QBasicTimer()
self.timer.start(500, self)
def updateWindow(self):
self.setWindowTitle(statusLine)
def timerEvent(self, event):
if event.timerId() == self.timer.timerId():
self.updateWindow()
else:
super(MainWidget, self).timerEvent(event)
def startWindow():
app = QtGui.QApplication(sys.argv)
mw = MainWidget()
mw.show()
app.exec_()
if __name__ == '__main__':
global statusLine
statusLine = 'foo'
threadWindow = threading.Thread(target=startWindow)
threadWindow.start()
sleep(2) # process lots of data
statusLine = 'bar'
# keep doing stuff and updating statusLine
编辑:这个简化的示例似乎没有得到警告;相反,我似乎只有在启动pyQt之前启动多个其他python线程时才会得到警告。然而,问题仍然存在:这样做有什么不对