• 【PyQt5 学习记录】006:重写窗口事件及QMessageBox


     1 #!/usr/bin/env python
     2 
     3 import sys
     4 from PyQt5.QtWidgets import (QApplication,
     5                              QMainWindow,
     6                              QMessageBox)
     7 from PyQt5.QtCore import Qt
     8 
     9 
    10 class Window(QMainWindow):
    11     def __init__(self, parent=None):
    12         super(Window, self).__init__(parent, Qt.Window)
    13 
    14         self.status = self.statusBar()
    15         self.init_ui()
    16 
    17     def init_ui(self):
    18         # 在程序窗口显示之前弹出对话框:
    19         message = QMessageBox()
    20         # 对话框图标设置:
    21         message.setIcon(QMessageBox.Information)
    22         # 设置对话框标题:
    23         message.setWindowTitle("开始")
    24         # 设置对话框文本:
    25         message.setText("软件运行。")
    26         # 设置对话框信息文本:
    27         message.setInformativeText("这是一个重写窗口事件的记录。")
    28         # 显示对话框:
    29         message.exec_()
    30 
    31         self.resize(500, 450)
    32         # 窗口置顶:
    33         self.setWindowFlag(Qt.WindowStaysOnTopHint)
    34         self.show()
    35 
    36     def moveEvent(self, *args, **kwargs):
    37         # 重写移动事件:
    38         # 在状态栏显示窗口坐标
    39         self.status.showMessage("窗口坐标: X = {0} | y = {1}".format(self.x(), self.y()))
    40 
    41     def resizeEvent(self, event):
    42         # 重写改变窗口尺寸事件:
    43         # 在状态栏显示窗口尺寸
    44         self.status.showMessage("窗口尺寸:{0} × {1}".format(self.width(), self.height()))
    45 
    46     def closeEvent(self, event):
    47         # 重写关闭事件,确认是否真的要关闭:
    48         self.status.showMessage("关闭提醒")
    49         message = QMessageBox()
    50         # 置顶显示对话框:
    51         message.setWindowFlag(Qt.WindowStaysOnTopHint)
    52         message.setIcon(QMessageBox.Warning)
    53         message.setText("真的要退出吗?")
    54         # 自定义对话框按钮:
    55         # 必须要指定按钮的 Role 属性,不能忘
    56         message.addButton("是的,我要退出!", QMessageBox.AcceptRole)
    57         msg_no = message.addButton("等等,我再想想!", QMessageBox.NoRole)
    58         # 设置默认按钮:
    59         message.setDefaultButton(msg_no)
    60         # 接收按下对话框按钮的信息:
    61         reply = message.exec_()
    62         # 第一个按钮返回 0 ,第二个返回 1 ,以此类推:
    63         if reply == 0:
    64             # 确认,退出程序:
    65             event.accept()
    66         # 也可以通过按钮的 Role 属性判断
    67         if reply == QMessageBox.NoRole:
    68             # 取消,不退出程序:
    69             event.ignore()
    70 
    71 
    72 if __name__ == "__main__":
    73     app = QApplication(sys.argv)
    74     win = Window()
    75     sys.exit(app.exec_())

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

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

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

  • 相关阅读:
    BZOJ 1192 鬼谷子的钱袋
    浅谈双连通分量、强连通分量
    BZOJ 1047 理想的正方形
    浅谈单调队列、单调栈
    django ORM之manytomany跨表
    django DateTimeField和DateField和TimeField
    django 一对多的添加记录create 和save 方法,update 更新和save()方法的区别,查询API的方法
    Python生成随机验证码
    obj.t2c.all-------django自动生成第三张多对多关系表中另一张表信息在前端的显示
    Form组件验证之ajax提交数据并显示错误信息
  • 原文地址:https://www.cnblogs.com/jmtm/p/9836369.html
Copyright © 2020-2023  润新知