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