默认情况下,如果我们点击标题栏上的 X 按钮,QWidget 关闭。有时候,我们需要改变这个默认行为。例如,如果我们有一个文件,要在编辑器中打开,我们可以先显示一个消息框,确认打开与否的操作。

#!/usr/bin/python3
# -*- coding: utf-8 -*-"""
PyQt5 教程当我们点击应用程序窗口的关闭按钮,该程序显示一个确认信息框。作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年7月29日
"""import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBoxclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 300, 220)self.setWindowTitle('消息盒子')        self.show()def closeEvent(self, event):reply = QMessageBox.question(self, '信息', '确认退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

如果我们关闭 QWidget控件,将产生 QCloseEvent 事件。修改控件特性我们需要重新实现 closeEvent() 事件处理程序。

        reply = QMessageBox.question(self, '信息', '确认退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

我们显示一个消息框,它有两个按钮:Yes和No。第一个字符串出现在标题栏。第二个字符串是对话框中显示的消息文本。第三个参数指定弹出的对话框中的按钮组合。最后一个参数是默认按钮,它是具有初始键盘焦点的按钮。返回值被存储在reply 变量中。

        if reply == QMessageBox.Yes:event.accept()else:event.ignore()

在这里我们使用 if 测试返回值。如果我们点击 Yes 按钮,我们接受了按钮控件的关闭并执行应用程序的终止事件。否则,我们忽略关闭事件。

程序执行后点击右上角的 x 弹出确认退出消息盒子

PyQt5教程-05-消息盒子相关推荐

  1. pyqt5教程12:拖放功能

    在 PyQt5 教程的这一部分中,我们将讨论拖放操作. 在计算机图形用户界面中,拖放是单击虚拟对象并将其拖动到不同位置或另一个虚拟对象上的动作(或支持动作).一般来说,它可以用来调用多种动作,或者在两 ...

  2. pyqt5教程9:Widgets组件

    PyQt5 widgets 小部件是应用程序的基本构建块. PyQt5 有各种各样的小部件,包括按钮.复选框.滑块或列表框.在本教程的这一部分,我们将描述几个有用的小部件:QCheckBox.切换模式 ...

  3. PyQt5教程(三)——Eric6的安装(详细)

                                               Eric6的安装 经过前两篇的介绍(Python和PyQt5的安装),本偏开始介绍Eric6的安装: PyQt5教 ...

  4. [译]Vulkan教程(05)Instance

    [译]Vulkan教程(05)Instance Creating an instance 创建一个instance The very first thing you need to do is ini ...

  5. pyqt5教程6:信号和事件

    PyQt5 中的事件和信号 在 PyQt5 编程教程的这一部分中,我们探讨了应用程序中发生的事件和信号.这部分比较抽象,也最难记忆. 一.PyQt5的事件 GUI 应用程序是事件驱动的.事件主要由应用 ...

  6. python PyQt5教程

    引用文章1:python PyQt5 教程 参考文章2:PyQt5 python官方教程 Qt for Python pyqt5-基础 PyQt5是一套来自Digia的Qt5应用框架和Python的粘 ...

  7. PyQt5 笔记5 -- 消息框(QMessageBox)

    PyQt5 笔记5 – 消息框(QMessageBox) 1.常用函数 函数原型: # 信息框 QMessageBox.information(self, '框名', '内容', 按钮s, 默认按钮) ...

  8. python中delete怎么用_python删除np.deletePython基础教程05 - 缩进和选择

    缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python! ...

  9. 微信机器人开发SDK使用教程--群发消息任务

    微信机器人开发SDK使用教程--群发消息任务 case "WeChatGroupSendTask": {// 群发消息任务 log.debug("websocket:ms ...

  10. QT:布局管理器消息盒子对话框

    让组件在水平和垂直方向对齐 有三种常用布局管理器: 水平,QHBoxLayout 垂直,QVBoxLayout 网格,QGridLayout(使布局好的界面嵌套到主窗口) 1.让组件大小固定 修改属性 ...

最新文章

  1. 集成学习之Bagging
  2. 以Java 8 为基准
  3. duilib 子窗口位置_Duilib学习笔记《02》— 界面布局
  4. go interface 转int_大神是如何学习 Go 语言之反射的实现原理
  5. 日志 php_高性能的PHP日志系统 SeasLog 使用
  6. nDPI-dev分析
  7. 计算机网络技术实验,计算机网络技术实验
  8. 机器码合集开源易语言源码-市场上带多数的
  9. c语言编程流水灯与交通灯实验,C51单片机实验报告流水灯交通灯定时器双机交互时钟(10页)-原创力文档...
  10. Android 存储
  11. 没了珊瑚虫你用谁?八大QQ主流修改版大比拼
  12. adodb 连接mysql_PHP程序中使用adodb连接不同数据库的代码实例
  13. .net cms系统
  14. 测试用例(功能用例)——资产类别、品牌、取得方式
  15. PS:将一个图片变成圆形
  16. 【5G NR】RRC Reject解析
  17. Go语言编程设计学习Day1:helloworld 变量 常量
  18. 研究意识问题为什么如此困难
  19. 如何知道电脑开机记录?
  20. 2012网站服务器目录磁盘满了,服务器磁盘异常爆满的原因及解决方法

热门文章

  1. Kaggle共享单车需求项目详解
  2. 2021高考成绩查询数学和物理,2021高考预测一本线 大概分数是多少
  3. 达梦新起点:达梦DM8化繁为简 助力数据库发展新方向
  4. debian修改键盘布局
  5. vue websocket实现消息推送和语音提醒功能
  6. C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码
  7. QT画贝塞尔曲线 和 曲线与斜率、一阶导数 、二阶导数的关系
  8. Kinect 姿势检测
  9. 常见WA错误总结(待更)
  10. 【电脑技术】修改无线网卡MAC地址失败的原因