19.PyQt5【基本组件】消息对话框-QMessageBox

一、前言

QMessageBox是一种常用的模态对话框,用于显示一些信息性消息,并可选择要求用户通过单击其上的任何一个标准按钮来做出响应。每个标准按钮都有一个预定义的标题、一个角色并返回一个预定义的十六进制数字。

二、学习目标

1.QMessageBox常用方法

2.QMessageBox常用信号

3.QMessageBox组件的应用

三、知识点

1.【QMessageBox常用方法】

方法 描述
setIcon() 显示与消息严重性相对应的预定义图标,有四种类型:
Question
Information
Warning
Critical
setText() 设置要显示的主要消息的文本
setInformativeText() 显示附加信息
setDetailText() 对话框显示一个详细信息按钮。此文本在单击时出现
setTitle() 显示对话框的自定义标题
setStandardButtons() 要显示的标准按钮列表。每个按钮
QMessageBox.Ok 0x00000400
QMessageBox.Open 0x00002000
QMessageBox.Save 0x00000800
QMessageBox.Cancel 0x00400000
QMessageBox.Close 0x00200000
QMessageBox.Yes 0x00004000
QMessageBox.No 0x00010000
QMessageBox.Abort 0x00040000
QMessageBox.Retry 0x00080000
QMessageBox.Ignore 0x00100000
setDefaultButton() 将按钮设置为默认值。如果按下 Enter,它会发出 clicked 信号
setEscapeButton() 设置按钮在按下退出键时被视为单击

2.【QMessageBox常用信号】

QMessageBox组件一般不需要用到信号。

信号 描述
buttonClicked(button) 当点击按钮时触发信号

3.【QMessageBox组件的应用】

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QMessageBox


class QmyWidget(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体
        self.setupUi()

    def setupUi(self):
        """页面初始化"""
        # 设置窗体大小及标题
        self.resize(500, 400)
        self.setWindowTitle("QMessageBox组件示例")
        # 创建布局
        self.layout = QVBoxLayout()
        # 创建两个按钮组件
        self.button = QPushButton("消息对话框测试", self)
        self.button.clicked.connect(self.msg_box_information)  # 为button绑定消息对话框
        # 将组件添加到布局中
        self.layout.addWidget(self.button)
        # 为窗体添加布局
        self.setLayout(self.layout)

    def msg_box_information(self):
        """消息对话框"""
        # QMessageBox组件定义
        messageBox = QMessageBox(QMessageBox.Information, "标题", "这是内容信息", QMessageBox.Ok, self)
        # QMessageBox组件设置
        messageBox.button(QMessageBox.Ok).setText("确定")                    # 为按钮设置文本
        reply = messageBox.exec()                                           # 显示一个模式对话框,有返回值
        if reply == QMessageBox.Ok:
            print("消息对话框选择了确定!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myMain = QmyWidget()
    myMain.show()
    sys.exit(app.exec_())
  • 关键代码

            # QMessageBox组件定义
            messageBox = QMessageBox(QMessageBox.Information, "标题", "这是内容信息", QMessageBox.Ok, self)
            # QMessageBox组件设置
            messageBox.button(QMessageBox.Ok).setText("确定")                    # 为按钮设置文本
            reply = messageBox.exec()                                           # 显示一个模式对话框,返回选择的按钮
            if reply == QMessageBox.Ok:
                print("消息对话框选择了确定!")
    

    exec_()显示一个模式对话框;show()显示一个非模式对话框。模式对话框,就是在弹出窗口的时候,整个程序就被锁定了,处于等待状态,直到对话框被关闭;非模式对话框,在调用弹出窗口之后,调用即刻返回,继续下面的操作。

posted @ 2023-01-16 10:44  测开星辰  阅读(957)  评论(0编辑  收藏  举报