gpt4 book ai didi

python - UI 关闭时 PyQT 应用程序挂起

转载 作者:行者123 更新时间:2023-11-30 23:23:43 25 4
gpt4 key购买 nike

我当前在尝试关闭应用程序时遇到问题。截至目前,我的应用程序当前生成并在 while 循环(while True 循环)中运行的线程,而我的主线程在 PyQT 中初始化并运行 UI。

def main():

group_size = 8
buffer_size = 4
app = QtGui.QApplication(sys.argv)
dgui = DirectGui(group_size, buffer_size)
engine = KCluster_Engine(group_size, buffer_size)
dgui.set_engine_ref(engine)
engine.assign_interface(dgui)
thread = Thread(target = engine.start)
thread.start()
sys.exit(app.exec_())

if __name__ == '__main__':
main()

当我在 PyQT 中关闭应用程序的主窗口时,即使使用 ctrl-c,也无法停止在 shell 中生成 python 脚本的命令。

处理这种行为的最佳方法是什么?当我关闭应用程序时,我还希望生成的线程停止、加入和退出此进程。我该怎么做?

最佳答案

根据 Python 标准库,有两种方法可以终止线程:

  • 要么将其设置为守护进程 (thread.daemaon = True),否则它将被杀死,而无法进行适当的清理
  • 或者您使用诸如 Event 之类的信号发送方法,并在线程中的适当位置进行测试

但我认为你应该看看这个较旧的(但仍然是现实的......)问题:Is there any way to kill a Thread in Python?

所有这些都假设 app.exec_() 在主线程中正确返回。

关于python - UI 关闭时 PyQT 应用程序挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23820096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com