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

前言

消息框控件(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() == '是'的方式进行判断
运行结果如下
在这里插入图片描述

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值