PyQt5 closeEvent关闭事件退出提示框原理解析


Posted in Python onJanuary 08, 2020

这篇文章主要介绍了PyQt5 closeEvent关闭事件退出提示框原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

如果关闭QWidget,就会产生一个QCloseEvent,并且把它传入到closeEvent函数的event参数中。改变控件的默认行为,就是替换掉默认的事件处理。

原生的英文提示框:

PyQt5 closeEvent关闭事件退出提示框原理解析

# 添加一个退出的提示事件
  def closeEvent(self, event):
    """我们创建了一个消息框,上面有俩按钮:Yes和No.第一个字符串显示在消息框的标题栏,第二个字符串显示在对话框,
          第三个参数是消息框的俩按钮,最后一个参数是默认按钮,这个按钮是默认选中的。返回值在变量reply里。"""
    
    reply = QMessageBox.question(self, 'Message',"Are you sure to quit?",
                   QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
    # 判断返回值,如果点击的是Yes按钮,我们就关闭组件和应用,否则就忽略关闭事件
    if reply == QMessageBox.Yes:
      event.accept()
    else:
      event.ignore()

修改成中文样式:

PyQt5 closeEvent关闭事件退出提示框原理解析

# 添加中文的确认退出提示框1
  def closeEvent(self, event):
    # 创建一个消息盒子(提示框)
    quitMsgBox = QMessageBox()
    # 设置提示框的标题
    quitMsgBox.setWindowTitle('确认提示')
    # 设置提示框的内容
    quitMsgBox.setText('你确认退出吗?')
    # 设置按钮标准,一个yes一个no
    quitMsgBox.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
    # 获取两个按钮并且修改显示文本
    buttonY = quitMsgBox.button(QMessageBox.Yes)
    buttonY.setText('确定')
    buttonN = quitMsgBox.button(QMessageBox.No)
    buttonN.setText('取消')
    quitMsgBox.exec_()
    # 判断返回值,如果点击的是Yes按钮,我们就关闭组件和应用,否则就忽略关闭事件
    if quitMsgBox.clickedButton() == buttonY:
      event.accept()
    else:
      event.ignore()
# 添加中文的退出提示框2
  def closeEvent(self, event):
    # 创建一个消息盒子(提示框)
    quitMsgBox = QMessageBox()
    # 设置提示框的标题
    quitMsgBox.setWindowTitle('确认窗口')
    # 设置提示框的内容
    quitMsgBox.setText('你确定退出吗?')
    # 创建两个点击的按钮,修改文本显示内容
    buttonY = QPushButton('确定')
    buttonN = QPushButton('取消')
    # 将两个按钮加到这个消息盒子中去,并指定yes和no的功能
    quitMsgBox.addButton(buttonY, QMessageBox.YesRole)
    quitMsgBox.addButton(buttonN, QMessageBox.NoRole)
    quitMsgBox.exec_()
    # 判断返回值,如果点击的是Yes按钮,我们就关闭组件和应用,否则就忽略关闭事件
    if quitMsgBox.clickedButton() == buttonY:
      event.accept()
    else:
      event.ignore()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python中的生成器和yield详细介绍
Jan 09 Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
python使用分治法实现求解最大值的方法
May 12 Python
基于python requests库中的代理实例讲解
May 07 Python
python实现kmp算法的实例代码
Apr 03 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
Django项目中实现使用qq第三方登录功能
Aug 13 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
python help函数实例用法
Dec 06 Python
关于Numpy之repeat、tile的用法总结
Jun 02 Python
python从内存地址上加载python对象过程详解
Jan 08 #Python
PyCharm第一次安装及使用教程
Jan 08 #Python
Python namedtuple命名元组实现过程解析
Jan 08 #Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 #Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 #Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 #Python
pycharm激活码有效到2020年11月底
Sep 18 #Python
You might like
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
极简的Python入门指引
2015/04/01 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
JSON Web Tokens的实现原理
2017/04/02 Python
python3设计模式之简单工厂模式
2017/10/17 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
python实现发送邮件
2021/03/02 Python
致接力运动员广播稿
2014/02/17 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
鸟的天堂导游词
2015/01/31 职场文书
运动会运动员赞词
2015/07/22 职场文书
2016年情人节问候语
2015/11/11 职场文书
多人股份制合作协议书
2016/03/19 职场文书
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
Python实现归一化算法详情
2022/03/18 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python