PyQt5零基础入门(六)——消息框控件(QMessageBox)

发布时间:2024年01月19日

前言

消息框控件(QMessageBox)是一个在图形用户界面(GUI)中常用的对话框控件,它用于显示一条信息或一个警告给用户。消息框通常用于告知用户关于程序的一些操作结果,比如文件保存成功、操作失败、提醒用户进行某些操作等。

消息框

在消息框控件(QMessageBox)中有以下方法

方法类型
question询问框
information信息框
warning警告框
critical错误框
about关于框

例子

QMessageBox中的消息框

在这里以question为例给出案例

from PyQt5.QtWidgets import *
import sys


class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.button = QPushButton('点我')
        self.button.clicked.connect(self.change_text)
        h_layout = QHBoxLayout()
        h_layout.addWidget(self.button)
        self.setLayout(h_layout)

    def change_text(self):
        choice = QMessageBox.question(self, '询问框', '请做出你的选择',
                                      QMessageBox.Yes|QMessageBox.No)

        print("询问框的选择是:", "Yes" if choice == QMessageBox.Yes else "No")

        choice = QMessageBox.question(self, '信息框', '请做出你的选择',
                                      QMessageBox.Yes | QMessageBox.No)

        print("信息框的选择是:", "Yes" if choice == QMessageBox.Yes else "No")

        choice = QMessageBox.warning(self, '警告框', '请做出你的选择',
                                      QMessageBox.Yes | QMessageBox.No)

        print("警告框的选择是:", "Yes" if choice == QMessageBox.Yes else "No")

        choice = QMessageBox.critical(self, '错误框', '请做出你的选择',
                                     QMessageBox.Yes | QMessageBox.No)

        print("错误框的选择是:", "Yes" if choice == QMessageBox.Yes else "No")

        QMessageBox.about(self, '关于框', "这是一个显示信息的框")



if __name__ == '__main__':
    app = QApplication([])
    win = Window()
    win.show()
    sys.exit(app.exec())


在QMessageBox中提供了常用的按钮,按钮如下:

  • QMessageBox.Ok
  • QMessageBox.Yes
  • QMessageBox.No
  • QMessageBox.Close
  • QMessageBox.Cancel
  • QMessageBox.Open
  • QMessageBox.Save

如果要加入多个按钮,只需要使用|分割即可。
当想要根据选择处理相关事件时,只需使用如if choice == QMessageBox.Yes的方式进行判断即可。

运行结果如下:
在这里插入图片描述
按下按钮后弹出若干个窗口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果交替选择Yes和No,结果如下

询问框的选择是: Yes
信息框的选择是: No
警告框的选择是: Yes
错误框的选择是: No

自定义带中文按钮的消息框

自定义消息框需要先构建QMessageBox的子类,使用addButton添加按钮,这个时候就可以自行设定按钮展示的文字了

from PyQt5.QtWidgets import *
import sys


class QuestionMessageBox(QMessageBox):
    def __init__(self, parent, title, content):
        super(QuestionMessageBox, self).__init__(parent)
        self.setWindowTitle(title)
        self.setText(content)
        self.setIcon(QMessageBox.Question)

        self.addButton('确认', QMessageBox.AcceptRole)
        self.addButton('取消', QMessageBox.RejectRole)
        self.addButton('是', QMessageBox.YesRole)
        self.addButton('否', QMessageBox.NoRole)


class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.button = QPushButton('点我')
        self.button.clicked.connect(self.change_text)
        h_layout = QHBoxLayout()
        h_layout.addWidget(self.button)
        self.setLayout(h_layout)

    def change_text(self):
        msb_box = QuestionMessageBox(self, '标题', '做出你的选择')
        msb_box.exec()
        print(msb_box.clickedButton().text())


if __name__ == '__main__':
    app = QApplication([])
    win = Window()
    win.show()
    sys.exit(app.exec())

当需要根据选择进行相应的操作时可以使用类似于if msb_box.clickedButton().text() == '是'的方式进行判断
运行结果如下
在这里插入图片描述

文章来源:https://blog.csdn.net/DuLNode/article/details/135689185
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。