zoukankan      html  css  js  c++  java
  • 【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 按钮后出现主窗口:

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

  • 相关阅读:
    centos crash debug
    go get Unknown SSL protocol error in connection to gopkg.in
    Tensorflow serving with Kubernetes
    Spring 集成 Swagger UI
    Docker Registry V2 Garbage Collection
    Docker Registry V2 with Nginx
    Zabbix磁盘性能监控
    Zabbix CPU utilization监控参数
    Windows挂载Gluster复制卷
    Redis持久化存储(三)
  • 原文地址:https://www.cnblogs.com/jmtm/p/9836369.html
Copyright © 2011-2022 走看看