如何在Mac OSX上使用Python生成线程并初始化Qt应用程序
我现在在用Python启动我的Qt应用程序时遇到了一些麻烦。这个代码的目的是想要创建一个Python线程,让它不停地循环执行一个函数,然后再初始化我的Qt应用。
import sys
from PyQt4 import QtGui
from pyui import DirectGui
from engines import KCluster_Engine
from threading import Thread
def main():
app = QtGui.QApplication(sys.argv)
dgui = DirectGui()
engine = KCluster_Engine(4, 5)
dgui.set_engine_ref(engine)
engine.assign_interface(dgui)
thread = Thread(target = engine.start())
thread.start()
sys.exit(app.exec_())
thread.join()
if __name__ == '__main__':
main()
问题在于,我无法使用我的Qt图形界面。我的Mac电脑显示了一个转动的彩色光标,说明我创建的线程正在运行,这本来是正常的,但我却无法操作我的Qt应用。
我的线程故意在一个循环中不停地转动,它本来是等到图形界面上某些操作完成后才会触发,但现在我无法与我的图形界面互动,因为Mac的彩色光标(转动的死亡海滩球)让我无法操作。
但想象一下,Mac的彩色光标(转动的死亡海滩球)也在转动,截图无法捕捉到它。
1 个回答
2
这是因为你在做这个:
thread = Thread(target = engine.start())
而你其实想要的是这个:
thread = Thread(target=engine.start)
你不小心在主线程里调用了engine.start(),所以你的程序被卡在了那个方法里的无限循环中。