現象:
通過右上角的叉關閉圖形界面后,程序運行的子線程卻不會被自動關閉,依然留存在系統中
原因:
子線程沒有正確關閉
解決方法:
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): """ 對MainWindow的函數closeEvent進行重構 退出軟件時結束所有進程 :param event: :return: """ reply = QtWidgets.QMessageBox.question(self, '本程序', "是否要退出程序?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: event.accept() os._exit(0) else: event.ignore()
轉載自:https://blog.csdn.net/wbdxz/article/details/86292393
參考資料:
https://blog.csdn.net/qingwufeiyang12346/article/details/78314370
https://ask.csdn.net/questions/701749
https://blog.csdn.net/weixin_42192419/article/details/80843088