前言
在使用 PySide2 和 Qt Quick 开发应用程序时,如果在程序启动时创建了一个新的线程,并且在关闭主窗口时程序没有退出,这可能是由于后台线程仍在运行,而主线程(GUI 线程)已经退出。
为了确保程序正确退出,需要确保所有后台线程在主窗口关闭时也被妥善处理。
以下是一些可能的解决方案:
设置线程为守护线程
在 Python 中,可以将线程设置为守护线程,这样当主线程退出时,守护线程会自动退出。
1 | import threading |
在主窗口关闭时停止后台线程
如果后台线程需要执行一些清理操作,可以显式地停止后台线程。
1 | import threading |
使用 QThread
在 Qt 应用程序中,推荐使用 QThread
而不是 Python 的 threading.Thread
,因为 QThread
与 Qt 的事件循环更紧密地集成。
1 | from PySide2.QtCore import QThread, Signal, Slot |
使用 QObject 的析构函数
确保在主窗口关闭时,所有相关的 QObject 对象被正确销毁。
1 | from PySide2.QtCore import QObject, Signal, Slot |
通过以上方法,可以确保在关闭主窗口时,后台线程被正确停止,从而使整个应用程序能够顺利退出。
获取所在线程
1 | import threading |