#!/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. jvm(1)类的加载(二)(自定义类加载器)

    [深入Java虚拟机]之四:类加载机制 1,从Java虚拟机的角度,只存在两种不同的类加载器: 1,启动类加载器:它使用C++实现(这里仅限于Hotspot,也就是JDK1.5之后默认的虚拟机,有其他 ...

  2. Nginx基本入门

    转自:http://blog.csdn.net/u012486840/article/details/53098890 1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静 ...

  3. 一文详解python的类方法,普通方法和静态方法

    首先形式上的区别,实例方法隐含的参数为类实例self,而类方法隐含的参数为类本身cls. 静态方法无隐含参数,主要为了类实例也可以直接调用静态方法. 所以逻辑上,类方法被类调用,实例方法被实例调用,静 ...

  4. OpenRefine导入CSV文件,数据清理后导出JSON格式

    第一步:选择要转换的CSV文件. 第二步:选择以逗号分割,并创建项目. 第三步:编辑,去掉特殊字符 Edit Cells > Transform... 第四步:导出文件,选择“Templatin ...

  5. RSNAKE 的 Slowloris DOS攻击工具初试

    Slowloris 号称低带宽对服务器进行DDOS攻击 原理就是对WEB服务器发送 不完整的包并且以 单一  \r\n结尾,并不是 完整的HTTP包.造成WEB服务器堵塞达到最大连接数. 官网给出介绍 ...

  6. Postman安装及简介

    Postman简介 不管web自动化测试还是APP自动化端,测试过程中都会涉及到接口测试.接口测试分为服务器端测试和客户端测试.今天给大家介绍一个测试服务器端的小工具--Postman.它可以构造各类 ...

  7. 给访问私有变量添加access method

    class TestAccessPrivateVar{ private int a = 1; class MyInner{ /* synthetic final TestAccessPrivateVa ...

  8. Architecture of a Java Compiler

    Architectural Overview   A modern optimizing compiler can be logically divided into four parts:   Th ...

  9. Check类中的incl、union,excl,diff,intersect

    定义一些类,这些类之间有父子关系,如下: class Father{} class Son1 extends Father{} class Son2 extends Father{} class To ...

  10. Java虚拟机(二):JVM内存模型

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...