Python 当UI关闭时,PyQT应用程序挂起
我当前在尝试关闭应用程序时遇到问题。到目前为止,我的应用程序当前在while循环(while-True循环)中生成并运行线程,而我的主线程在PyQT中初始化并运行UIPython 当UI关闭时,PyQT应用程序挂起,python,multithreading,pyqt,Python,Multithreading,Pyqt,我当前在尝试关闭应用程序时遇到问题。到目前为止,我的应用程序当前在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_Engin
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中关闭应用程序的主窗口时,在shell中生成python脚本的命令无法停止,即使使用ctrl-c
处理这种行为的最佳方式是什么?当我关闭应用程序时,我还希望生成的线程停止、加入并退出此进程。如何执行此操作?如果将线程设为daemonic,它将在退出应用程序后停止。
在启动之前放置
thread.daemon=True
(如果在调用start之后执行此操作,将引发异常)。它应该可以很好地处理线程模块中的线程。根据Python标准库,有两种终止线程的方法:
- 如果您将其设为daemonic(
),则它将在没有任何适当清洁的情况下被杀死thread.daemaon=True
- 或者,您可以使用类似于
的信令方法,在线程中的适当位置进行测试Event
所有这一切都假设
app.exec_389;()
在主线程中正确返回。该线程很可能被卡住了。把原木放在那里,看看有什么happening@AbhishekBansal事实上,我知道它在一个真正的循环中旋转。退出应用程序后是否需要调用它以停止?当您关闭上一个窗口时,app.exec\ux()
是否返回?