如何在Mac OSX上使用Python生成线程并初始化Qt应用程序

0 投票
1 回答
512 浏览
提问于 2025-04-18 06:28

我现在在用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的彩色光标也在转动,截图无法捕捉到它。

但想象一下,Mac的彩色光标(转动的死亡海滩球)也在转动,截图无法捕捉到它。

1 个回答

2

这是因为你在做这个:

thread = Thread(target = engine.start())

而你其实想要的是这个:

thread = Thread(target=engine.start)

你不小心在主线程里调用了engine.start(),所以你的程序被卡在了那个方法里的无限循环中。

撰写回答