PyQt学习笔记:关闭窗口前弹出确认框

本文介绍了如何在关闭窗口时通过弹出确认对话框,实现退出前自动保存功能,并强调了异常处理的重要性,确保程序稳健性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预期功能:

关闭右上角的×按钮时,弹出确认框,“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函数。

所以记得做好异常捕获。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值