我正在尝试在启动qt应用程序时在python中生成线程时遇到问题。这段代码中的想法是生成一个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 GUI。我的mac给了我一个色轮,表明我生成的线程正在旋转,它应该这样做,但我不能使用我的QtApplication。
我的线程在一个while循环中故意旋转,它只能在GUI上的某些操作完成后触发,但是我无法与我的GUI交互作为mac色轮(旋转死亡的沙滩球) )阻止我这样做。
但是想象一下mac色轮光标(旋转死亡的沙滩球),截图也没有抓住它。
答案 0 :(得分:2)
这种情况正在发生,因为您正在执行此操作:
thread = Thread(target = engine.start())
当你真的想要这个时:
thread = Thread(target=engine.start)
您在主线程中意外调用了engine.start(),因此您的程序陷入了在该方法中运行的无限循环中。