PyQt5 QMessageBox 消息提示对话框

QMessageBox 消息提示对话框

    描述

    • 用于通知用户或请求用户的提问和接收应答一个模态对话框

    • 对话框的构成

    image.png

    图标可以使用标准图标

    • image.png

    继承自:QDialog

    构造函数

    # 创建对象的同时设置父对象
    QMessageBox(parent: QWidget = None)
     
    # 创建对象的同时设置图标、窗口标题、主标题、多个按钮和父对象、窗口标识
    QMessageBox(QMessageBox.Icon, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.NoButton, parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.Dialog|Qt.MSWindowsFixedSizeDialogHint)
    * 主标题文本是一个富文本,可以通过HTML标签对文本格式进行调整,例如:<H2>主标题</H2>

    模态修改(模态修改必须在控件弹出之前设置好)

    setModal(bool)                              # 设置对话框是否为模态
    setWindowModality(Qt.NonModal)              # 设置窗口为非模态

    弹出

    • 该对话框默认打开是窗口级别的模态对话框

    exec()                                      # 以窗口级别的模态对话框弹出
    open()                                      # 以应用程序级别的模态对话框弹出
     
    # show() 方法弹出的对话框也被重写为窗口级别的模态对话框了

    设置窗口标题

    setWindowTitle(str)                         # 设置对话框标题

    图标

    setIcon(QMessageBox.Icon)                   # 设置标准图标
    icon() ->QMessageBox.Icon                   # 获取图标,返回表中图标对象
    # 参数:QMessageBox.Icon    
    #       QMessageBox.Noicon                  # 消息框没有任何图标
    #       QMessageBox.Question                # 一个图标,表示该消息正在提问
    #       QMessageBox.Information             # 一个图标,表示该消息没有任何异常
    #       QMessageBox.Warning                 # 一个图标,表示改消息是一个警告
    #       QMessageBox.Critical                # 一个图标,表示该消息代表一个严重问题、
     
    setIconPixmap(QPixmap)                      # 设置自定义图标
    iconPixmap()->QPixmap                       # 获取图标,返回自定义图标对象

    设置内容主要标题

    setText(str)                                # 设置主要标题,接受富文本
    setTextFormat(self, Qt.TextFormat)          # 设置文本格式
    textFormat()                                # 获取文本格式
    # 参数:Qt.TextFormat   
    #       Qt.PlainText                        # 普通文本
    #       Qt.RichText                         # 富文本
    #       Qt.AutoText                         # 自动识别文本格式

    设置提示文本

    setInformativeText(str)                     # 设置提示文本,接受富文本
    informativeText()-> str                    # 获取提示文本内容

    置详细文本,设置了详细文本内容后,会自动添加一个展开/隐藏详细文本的按钮

    setDetailedText(self, str)                  # 设置详细文本,不接受富文本
    detailedText()->str                         # 获取详细文本内容

    设置复选框

    setCheckBox(self, QCheckBox)                # 设置复选框
    checkBox(self)->QCheckBox                   # 获取复选框,返回QCheckBox对象

    设置标准按钮

    setStandardButtons(self, Uion[QMessageBox.StandardButtons,QMessageBox.StandardButton])      # 设置标准按钮
    standardButton(self,QAbstractButton)->QMessageBox.StandardButton                            # 获取标准按钮
    standardButtons(self)->QMessageBox.StandardButtons                                          # 获取所有标准按钮
    # 参数:QMessageBox.StandardButton
    #       QMessageBox.Ok                      # 使用AcceptRole定义的“确定”按钮。
    #       QMessageBox.Open                    # 使用AcceptRole定义的“打开”按钮。
    #       QMessageBox.Save                    # 使用AcceptRole定义的“保存”按钮。
    #       QMessageBox.Cancel                  # 使用RejectRole定义的“取消”按钮。
    #       QMessageBox.Close                   # 使用RejectRole定义的“关闭”按钮。
    #       QMessageBox.Discard                 #  “丢弃”或“不保存”按钮,具体取决于使用DestructiveRole定义的平台。
    #       QMessageBox.Apply                   # 使用ApplyRole定义的“应用”按钮。
    #       QMessageBox.Reset                   # 使用ResetRole定义的“重置”按钮。
    #       QMessageBox.RestoreDefaults         # 使用ResetRole定义的“恢复默认值”按钮。
    #       QMessageBox.Help                    # 使用HelpRole定义的“帮助”按钮。
    #       QMessageBox.SaveAll                 # 使用AcceptRole定义的“全部保存”按钮。
    #       QMessageBox.Yes                     # 使用YesRole定义的“是”按钮。
    #       QMessageBox.YesToAll                # 使用YesRole定义的“Yes to All”按钮。
    #       QMessageBox.No                      # 使用NoRole定义的“否”按钮。
    #       QMessageBox.NoToAll                 # 使用NoRole定义的“No to All”按钮。
    #       QMessageBox.Abort                   # 使用RejectRole定义的“Abort”按钮。
    #       QMessageBox.Retry                   # 使用AcceptRole定义的“重试”按钮。
    #       QMessageBox.Ignore                  # 使用AcceptRole定义的“忽略”按钮。
    #       QMessageBox.NoButton                # 无效按钮。
    • AcceptRole:表示点击按钮可以接受对话框

    • RejectRole:表示单击该按钮将导致对话框被拒绝

    • DestructiveRole:表示单击该按钮将导致破坏性更改(例如“丢弃更改”)并关闭对话框

    添加移除按钮

    addButton(self, QAbstractButton, QMessageBox.ButtonRole)            # 添加一个自定义按钮,并设置其角色(确定其是确定还是取消或者其他按钮)
    addButton(self, str, QMessageBox.ButtonRole) -> QPushButton         # 输入按钮显示文本添加按钮并设置其角色,返回该按钮对象
    addButton(self, QMessageBox.StandardButton) -> QPushButton          # 添加一个标准按钮,返回该按钮对象
    removeButton(self, QAbstractButton)                                 # 移除指定按钮对象
     
    # 参数:QMessageBox.ButtonRole(角色)
    #       QMessageBox.InvalidRole                                     # 该按钮无效。
    #       QMessageBox.AcceptRole                                      # 单击该按钮将使对话框被接受(例如,确定)。
    #       QMessageBox.RejectRole                                      # 单击该按钮会导致拒绝对话框(例如取消)。
    #       QMessageBox.DestructiveRole                                 # 单击该按钮会导致破坏性更改(例如,对于Discarding  Changes)并关闭对话框。
    #       QMessageBox.ActionRole                                      # 单击该按钮将导致更改对话框中的元素。
    #       QMessageBox.HelpRole                                        # 可以单击该按钮以请求帮助。
    #       QMessageBox.YesRole                                         # 按钮是一个“是”的按钮。
    #       QMessageBox.NoRole                                          # 按钮是一个“无”按钮。
    #       QMessageBox.ApplyRole                                       # 该按钮应用当前更改。
    #       QMessageBox.ResetRole                                       # 该按钮将对话框的字段重置为默认值。

    获取按钮

    button(self, QMessageBox.StandardButton) -> QAbstractButton         # 通过QMessageBox枚举值获取一个标准按钮
    buttons(self) -> List[QAbstractButton]                              # 获取所有按钮,返回一个列表

    获取按钮的角色

    buttonRole(self, QAbstractButton) -> QMessageBox.ButtonRole
    # 参数:QMessageBox.ButtonRole(角色)
    #       QMessageBox.InvalidRole                                     # 该按钮无效。
    #       QMessageBox.AcceptRole                                      # 单击该按钮将使对话框被接受(例如,确定)。
    #       QMessageBox.RejectRole                                      # 单击该按钮会导致拒绝对话框(例如取消)。
    #       QMessageBox.DestructiveRole                                 # 单击该按钮会导致破坏性更改(例如,对于Discarding  Changes)并关闭对话框。
    #       QMessageBox.ActionRole                                      # 单击该按钮将导致更改对话框中的元素。
    #       QMessageBox.HelpRole                                        # 可以单击该按钮以请求帮助。
    #       QMessageBox.YesRole                                         # 按钮是一个“是”的按钮。
    #       QMessageBox.NoRole                                          # 按钮是一个“无”按钮。
    #       QMessageBox.ApplyRole                                       # 该按钮应用当前更改。
    #       QMessageBox.ResetRole                                       # 该按钮将对话框的字段重置为默认值。

    设置默认按钮

    setDefaultButton(self, QPushButton)                                 # 设置指定自定义按钮为默认选中按钮
    setDefaultButton(self, QMessageBox.StandardButton)                  # 设置指定标准按钮为默认选中按钮
    defaultButton(self) -> QPushButton                                  # 获取被设置为默认选中的按钮
    # 默认选中的按钮:获取光标的按钮,按下回车会发射该按钮的点击信号

    设置退出按钮

    • 按Esc激活的按钮

    setEscapeButton(self, QAbstractButton)                              # 设置指定按钮为退出按钮
    setEscapeButton(self, QMessageBox.StandardButton)                   # 设置指定标准按钮为退出按钮
    escapeButton(self)->QAbstractButton)                                # 获取退出按钮对象

    获取被点击的按钮

    clickedButton(self) -> QAbstractButton                              # 获取被点击的按钮,返回按钮对象

    文本交互

    • 控制的是主标题

    setTextInteractionFlags(Qt.TextInteractionFlag)
    textInteractionFlags()->Qt.TextInteractionFlag
    # 参数:Qt.TextInteractionFlag
    #       Qt.NoTextInteraction                    # 不可能与文本进行交互
    #       Qt.TextSelectableByMouse                # 可以使用鼠标选择文本并使用上下文菜单或标准...
    #       Qt.TextSelecttableByKeyboard            # 可以使用键盘上的光标键选择文本,显示文本
    #       Qt.LinksAccessibleByMouse               # 可以使用鼠标突出显示和激活连接
    #       Qt.LinksAccessibleByKeyboard            # 可以使用选项卡聚焦连接并使用enter激活
    #       Qt.TextEditable                         # 该文本内容完全可编辑
    #       Qt.TextEditorInteraction                # 文本编辑器的默认值(Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard)
    #       Qt.TextBrowserInteraction               # QTextBrowser的默认值(Qt.TextSelectableByMouse | Qt.LinksAccessibleByMouse)

    静态方法

    • 快速展示指定类型的消息提示对话框

    # 关于对话框
    about(QWidget, str, str)
     
     # 关于Qt的对话框
    aboutQt(QWidget, title:str='')
     
    # 错误消息提示对话框,返回用户点击的按钮
    critical(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.Ok, defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton
     
    # 普通消息提示对话框,返回用户点击的按钮
    information(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.Ok, defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton
     
    # 疑问消息提示对话框,返回用户点击的按钮
    question(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No), defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton
     
    # 警告消息提示对话框,返回用户点击的按钮
    warning(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.Ok, defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) -> QMessageBox.StandardButton

    可用信号

    buttonClicked(QAbstractButton button)                                           # 按钮被点击时发射该信号,传递被点击的按钮对象


    评论回复