pyqt點選右上角關閉介面但子執行緒仍在執行
阿新 • • 發佈:2019-01-11
現象:
- 通過右上角的叉關閉圖形介面後,程式執行的子執行緒卻不會被自動關閉,依然留存在系統中
原因:
- 子執行緒沒有正確關閉
解決方法:
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()
參考資料: