python gui图形界面关闭后,程序仍在运行

有些时候,我们的程序虽然关闭了,但是其实只是界面的UI关闭了,可能后台程序依然在运行。


不知道你是否有这样的情况,比如你在调试一个程序的时候,如果你不关闭它,是不能在重启一个进程调试的。但是,有时候,即使你关闭了程序,它依无法调试,提示程序正在运行。这个时候就是涉及到我们的UI渲染问题。


正常的情况下,我们的UI和获取数据时分开处理的,比如获取数据我们可以采用新起一个线程,这个时候我们要做的就是在UI线程销毁的时候,需要把后台线程也销毁掉。


在python gui中,我们可以通过两种方式来解决这个问题。


  1. 设置守护进程。

self.your_thread = threading.Thread(target=self.tcp_client_concurrency)
# 设置线程为守护线程,防止退出主线程时,子线程仍在运行
self.your_thread.setDaemon(True)
# 新线程启动
self.your_thread.start()

2.重构 def closeEvent(self, event): 函数

def closeEvent(self,event):
      sys.exit(app.exec_())


这样处理之后,我们的程序关闭之后,就可以正常打开调试了。