PyQt5-子窗口关闭时,强制关闭子线程
目的:为解决 在多窗口调用过程中,由于在子窗口中启用了线程处理任务,当关闭子窗口后,线程没有关闭的问题。
参考pyqt使用手册:
调用terminate()
这个方法可强制关闭当前线程
具体代码如下:
import QThread
# 重新线程,在run()函数中以打印数字模拟耗时任务
class MyThread(QThread):
def __init__(self):
super().__init__()
def run(self) -> None:
for i in range(100):
print(i)
time.sleep(0.5)
# 此处是重写了子窗口的关闭事件
# self.myThread是已经启动(self.myThread.strat())的线程
def closeEvent(self, event):
self.myThread.terminate() # 结束此进程
self.myThread.wait() # 等待结束完成
if self.myThrad.isFinished(): # 如果当前线程已经完成工作,则删除
del self.myThread
这样就完成了在关闭子窗口时,同时结束子窗口中启用的子线程了。