pyqt點擊右上角關閉界面但是子線程仍在運行


現象:

通過右上角的叉關閉圖形界面后,程序運行的子線程卻不會被自動關閉,依然留存在系統中
原因:

子線程沒有正確關閉
解決方法:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM