预期功能:
关闭右上角的×按钮时,弹出确认框,“Yes”退出,“No”忽视。
添加函数:
# 关闭窗口时弹出确认消息
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Warning', '确认退出?', QMessageBox.Yes, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
该函数为Ovrides method in QWidget,无需绑定按钮。
在此基础上能实行一些额外的判断,比如说退出自动保存。
程序在退出确认前自动保存界面上的内容:
现在假设 self.save_note() 是已经写好的保存文件的函数。
可以在上述的确认关闭函数中引用该函数:
# 关闭窗口时弹出确认消息
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Warning', '确认退出?', QMessageBox.Yes, QMessageBox.No)
if reply == QMessageBox.Yes:
# 接收到确认关闭信号之后保存note,然后关闭窗口
self.save_note()
event.accept()
else:
event.ignore()
这样就先保存note,然后再执行退出操作。实现自动保存功能
这个方法有一个弊端,就是如果程序因为错误直接退出,那么就不会执行closeEvent函数。
所以记得做好异常捕获。