【转载】pyqt5 关闭按钮显示提示信息

pyqt5 关闭按钮显示提示信息

pyqt默认创建的程序是点击右上角关闭按钮直接关闭软件的,所以我们如果想要在点击关闭按钮时显示提示信息或者其他操作,就需要重写这个closeEvent方法。

首先新建一个类,类名随意取一个就好,这里用Dialog就行了吧,继承下QtWidgets.QMainWindow这个类。

class Dialog(QtWidgets.QMainWindow):

然后重写下这个closeEvent方法,重写这个方法有两种写法,一种可以随意添加或者命名按钮,一种比较简单,直接显示yes 或者 no,

方法一预览:

方法二预览:

方法一的代码:

def closeEvent(self, event):
        reply = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Question, self.tr("提示"), self.tr("汝妻子我养之,汝勿虑之。\n 汝特么确定要退出吗?"), QtWidgets.QMessageBox.NoButton, self)
        yr_btn = reply.addButton(self.tr("是的我要退出"), QtWidgets.QMessageBox.YesRole)
        reply.addButton(self.tr("最小化到托盘"), QtWidgets.QMessageBox.NoRole)
        reply.exec_()
        if reply.clickedButton() == yr_btn:
            event.accept()
            QtWidgets.qApp.quit()
            # sys.exit(app.exec_())
        else:
            event.ignore()
            # 最小化到托盘
            

方法二的代码:

def closeEvent(self, event):
    # 默认直接调用QMessageBox.question 弹出询问的方法
        reply = QtWidgets.QMessageBox.question(self,
                                               '本程序',
                                               "是否要退出程序?",
                                               QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No)
        if reply == QtWidgets.QMessageBox.Yes:
            event.accept()
        elif reply == QtWidgets.QMessageBox.No:
            event.ignore()
            MainWindow.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.FramelessWindowHint)
            MainWindow.showMinimized()
        else:
            # 最小化到托盘
            MainWindow.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.FramelessWindowHint)
            MainWindow.showMinimized()

需要注意的是方法一中最小化到托盘其实并不能用,这段代码是我从一大段程序中摘出来的,点击最小化到托盘其实功能和方法二中的no效果是一样的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值