#!/usr/bin/env python

 import sys
from PyQt5.QtWidgets import (QApplication,
QMainWindow,
QMessageBox)
from PyQt5.QtCore import Qt class Window(QMainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent, Qt.Window) self.status = self.statusBar()
self.init_ui() def init_ui(self):
# 在程序窗口显示之前弹出对话框:
message = QMessageBox()
# 对话框图标设置:
message.setIcon(QMessageBox.Information)
# 设置对话框标题:
message.setWindowTitle("开始")
# 设置对话框文本:
message.setText("软件运行。")
# 设置对话框信息文本:
message.setInformativeText("这是一个重写窗口事件的记录。")
# 显示对话框:
message.exec_() self.resize(500, 450)
# 窗口置顶:
self.setWindowFlag(Qt.WindowStaysOnTopHint)
self.show() def moveEvent(self, *args, **kwargs):
# 重写移动事件:
# 在状态栏显示窗口坐标
self.status.showMessage("窗口坐标: X = {0} | y = {1}".format(self.x(), self.y())) def resizeEvent(self, event):
# 重写改变窗口尺寸事件:
# 在状态栏显示窗口尺寸
self.status.showMessage("窗口尺寸:{0} × {1}".format(self.width(), self.height())) def closeEvent(self, event):
# 重写关闭事件,确认是否真的要关闭:
self.status.showMessage("关闭提醒")
message = QMessageBox()
# 置顶显示对话框:
message.setWindowFlag(Qt.WindowStaysOnTopHint)
message.setIcon(QMessageBox.Warning)
message.setText("真的要退出吗?")
# 自定义对话框按钮:
# 必须要指定按钮的 Role 属性,不能忘
message.addButton("是的,我要退出!", QMessageBox.AcceptRole)
msg_no = message.addButton("等等,我再想想!", QMessageBox.NoRole)
# 设置默认按钮:
message.setDefaultButton(msg_no)
# 接收按下对话框按钮的信息:
reply = message.exec_()
# 第一个按钮返回 0 ,第二个返回 1 ,以此类推:
if reply == 0:
# 确认,退出程序:
event.accept()
# 也可以通过按钮的 Role 属性判断
if reply == QMessageBox.NoRole:
# 取消,不退出程序:
event.ignore() if __name__ == "__main__":
app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_())

程序运行时先弹出对话框:

点击 OK 按钮后出现主窗口:

点击关闭按钮时会出现确认对话框:

【PyQt5 学习记录】006:重写窗口事件及QMessageBox的更多相关文章

  1. Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)

    PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...

  2. 【PyQt5 学习记录】008:改变窗口样式之二

    super(MainWindow, self).__init__(parent, flags=Qt.Widget) 首先需要关闭窗口的默认样式,以方便定时想要的样式: self.setWindowFl ...

  3. 【PyQt5 学习记录】007:改变窗口样式之一

    class MainWindow(QMainWindow): 2 def __init__(self, parent=None): 3 super(MainWindow, self).__init__ ...

  4. 【PyQt5 学习记录】001:第一个界面

    PyQt5 的安装很简单: pip3 install PyQt5 然后就是写一个最简单的界面试试手: import sys from PyQt5.QtWidgets import QApplicati ...

  5. 【PyQt5 学习记录】010:QSplitter

    import sys from PyQt5.QtWidgets import (QApplication, QWidget, QSplitter, QTextEdit, QPushButton, QL ...

  6. 【PyQt5 学习记录】005:QMainWindow 及状态栏、菜单栏和工具栏

    #!/usr/bin/env python import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QA ...

  7. 【PyQt5 学习记录】003:水平布局和获取屏幕尺寸

    #!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PySide2.QtWidgets import (QApplication, QW ...

  8. 【PyQt5 学习记录】011:使用 QListWidet 创建列表

    使用 QListWidet 创建列表 作者: 八月未见 博客: https://www.cnblogs.com/jmtm/ 创建列表: list_widget = QListWidget() 插入项目 ...

  9. 【PyQt5 学习记录】004:简单QThread笔记

    在文本编辑框中每隔几秒添加一行文本,代码如下: #!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PyQt5.QtWidgets im ...

随机推荐

  1. [JavaScript] 获取数组中相同元素的个数

    /** * 获取数组中相同元素的个数 * @param val 相同的元素 * @param arr 传入数组 */ function getSameNum(val,arr){ processArr ...

  2. Archlinux Setup AUR

    方案一 pacman -Sy yaourt yaourt -Sy pacaur pacaur -Sa xxx 方案二 git clone git clone https://aur.archlinux ...

  3. 从码农升为PM(节约成本)

    做为一个码农的潜规则,用户怎么要求怎么写,不论过程只论是否符合要求以及减少bug的存在,虽然bug随时会出现,这就是码农,一直以来都说码农分很多种但个人认为就是一种,原因是码农不懂的换位思考,不懂的在 ...

  4. 【BZOJ1069】【SCOI2007】最大土地面积

    题目大意:给定有n个点的点集,求该点集中任意四个点所构成的四边形中面积最大四边形的面积. 我们不难想到(不难yy出来),面积最大的四边形的四个顶点一定所给定的点集所构成的凸包上.我们求出给定点集的集合 ...

  5. (转)WebSphere 中池资源调优 - 线程池、连接池和 ORB

    WebSphere 中池资源调优 - 线程池.连接池和 ORB 来自:https://www.ibm.com/developerworks/cn/websphere/library/techartic ...

  6. PL/SQL DEVELOPER数字超长显示了科学计数法

    问题: 最近在做项目中,ID使用了长整形,10进制数值大约长度17位,在pl/sql developer 上数值由科学计数法显示. 在查看时不是很方便,且数值进行了省略显示,不准确. 解决方法: 在t ...

  7. Windows环境下执行hadoop命令出现Error: JAVA_HOME is incorrectly set Please update D:\SoftWare\hadoop-2.6.0\conf\hadoop-env.cmd错误的解决办法(图文详解)

    不多说,直接上干货! 导读   win下安装hadoop 大家,别小看win下的安装大数据组件和使用  玩过dubbo和disconf的朋友们,都知道,在win下安装zookeeper是经常的事   ...

  8. windows server 2012 如何开启 hyper-v 并创建虚拟机

    当我们拿到一台新的windows server 2012 服务器的时候,默认hyper-v是没有开启的,如果我们要在windows server上面创建虚拟机,那么我们也就需要开启hyper-v. 开 ...

  9. Linux-文件和目录属性

    文件系统的是用来组织和排列文件存取的,所以它是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,见到的都是树形结构:比如操作系统安装在一个文件系统中,他表现为由/ 起始的 ...

  10. 从raft论文出发

    介绍 Raft是一种为了管理复制日志的一致性算法.为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举.日志复制和安全性.同时它通过实施一个更强的一致性来减少需要考虑的状态的数 ...