QMessageBox消息框
继承于 QDialog
对话框的构成:
构造函数法:
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox,QCheckBox from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap class Demo(QWidget): def __init__(self): super(Demo, self).__init__() mb=QMessageBox(self) #创建信息对话框 #继承于QDialog,需要show,exec,open来弹出 #默认是一个模态对话框,即使show弹出的对话框也是模态的 #mb = QMessageBox(QMessageBox.NoIcon,'对话框标题','<h2>主要标题信息</h2>',QMessageBox.Ok | QMessageBox.Discard ,self) #参数1 图标: #QMessageBox.NoIcon 没有图标 # QMessageBox.Warning 警告图标 #QMessageBox.Critical 严重问题图标 #QMessageBox.Information 没有任何异常图标 #QMessageBox.Question 提问图标 #参数2 对话框标题 #参数3 主要标题信息--可以是富文本 #参数4 按钮: #QMessageBox.Ok 使用AcceptRole定义的“确定”按钮 #QMessageBox.Discard “丢弃”或“不保存”按钮,具体取决于使用DestructiveRole定义的平台 #QMessageBox.Open 使用AcceptRole定义的“打开”按钮。 #QMessageBox.Save 使用AcceptRole定义的“保存”按钮。 #QMessageBox.Cancel 使用RejectRole定义的“取消”按钮。 #QMessageBox.Close 使用RejectRole定义的“关闭”按钮。 #QMessageBox.Apply 使用ApplyRole定义的“应用”按钮。 #QMessageBox.Reset 使用ResetRole定义的“重置”按钮。 #QMessageBox.RestoreDefaults 使用ResetRole定义的“恢复默认值”按钮。 #QMessageBox.SaveAll 使用AcceptRole定义的“全部保存”按钮。 #QMessageBox.Yes 使用YesRole定义的“是”按钮。 #QMessageBox.YesToAll 使用YesRole定义的“Yes to All”按钮。 #QMessageBox.No 使用NoRole定义的“否”按钮。 #QMessageBox.Help 使用HelpRole定义的“帮助”按钮。 #QMessageBox.NoToAll 使用NoRole定义的“No to All”按钮。 #QMessageBox.Abort 使用RejectRole定义的“Abort”按钮。 #QMessageBox.Retry 使用AcceptRole定义的“重试”按钮。 #QMessageBox.Ignore 使用AcceptRole定义的“忽略”按钮。 #QMessageBox.NoButton 无效按钮。 self.mb=mb #mb.setModal(False) #设置是否模态对话框 mb.setWindowModality(Qt.NonModal) #设置成非模态 mb.setIcon(QMessageBox.Question) #设置标准图标 mb.setIconPixmap(QPixmap('./大象.png').scaled(100,100)) #用自定义图像做图标 mb.setTextFormat(Qt.AutoText) #设置文本格式 #Qt.PlainText 普通文本 #Qt.RichText 富文本--默认 #Qt.AutoText 自动识别 mb.setText('<h2>我是主要标题信息</h2>') #设置主要标题信息---支持富文本 mb.setInformativeText('<h3>提示信息</h3>') #设置提示信息---支持富文本 #informativeText() 返回提示文本 mb.setCheckBox(QCheckBox('复选框',mb)) #设置复选框 mb.setDetailedText('我是详细文本') #设置详细文本---不支持富文本 #按钮: mb.setStandardButtons(QMessageBox.Yes ) #添加标准按钮 #设置了Yes和No按钮 #按钮类型看上面 btn=QPushButton('按钮1',mb) mb.addButton(btn,QMessageBox.YesRole) #添加自定义按钮--方式一 btn1=mb.addButton('按钮2', QMessageBox.NoRole) #方式二 #参数2 按钮角色: #YesRole 按钮是一个“是”的按钮 #InvalidRole 该按钮无效 #AcceptRole 单击该按钮将使对话框被接受(例如,确定) #RejectRole 单击该按钮会导致拒绝对话框(例如取消) #DestructiveRole 单击该按钮会导致破坏性更改(例如,对于Discarding Changes)并关闭对话框 #ActionRole 单击该按钮将导致更改对话框中的元素 #HelpRole 可以单击该按钮以请求帮助。 #NoRole 按钮是一个“无”按钮。 #ApplyRole 该按钮应用当前更改。 #ResetRole 该按钮将对话框的字段重置为默认值。 #返回值:按钮对象 btn5=mb.button(QMessageBox.Yes) #返回标准按钮的对象 s=mb.buttonRole(btn1) #返回按钮的角色对象 #mb.removeButton(btn1) #移除按钮 mb.setDefaultButton(btn1) #设置自定义默认按钮 mb.setDefaultButton(QMessageBox.Yes) #设置标准默认按钮 s=mb.defaultButton() #返回默认按钮 mb.setEscapeButton(btn1) #设置ESC所对应的按钮--自定义 mb.setEscapeButton(QMessageBox.Yes) #设置ESC所对应的按钮--标准按钮 mb.setTextInteractionFlags(Qt.NoTextInteraction) #设置文本交互标志--针对主要标题信息 #Qt.TextEditorInteraction 允许文本交互---允许编辑 #Qt.NoTextInteraction 不允许交互 #信号: mb.buttonClicked.connect(self.AA) #按钮被点击时发出信号 #会把被点击的按钮对象传递给槽函数 print(s) mb.show() def AA(self,bt): print('按钮被点击了',bt) print('点击的按钮是:', self.mb.clickedButton()) # clickedButton() #返回被点击的按钮 if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
静态方法:
QMessageBox.about(self,'xx1','xx2') #展示关于消息框
#参数2 对话框标题
#参数3 提示消息
r=QMessageBox.question(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展示提问消息框
#参数4 按钮
#参数5 默认按钮
#返回值:整型值 按钮的编码
r=QMessageBox.warning(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展示警告消息框
#参数4 按钮
#参数5 默认按钮
#返回值:整型值 按钮的编码
r=QMessageBox.critical(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展示警告消息框
#参数4 按钮
#参数5 默认按钮
#返回值:整型值 按钮的编码
r=QMessageBox.information(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展示警告消息框
#参数4 按钮
#参数5 默认按钮
#返回值:整型值 按钮的编码
天子骄龙
天子骄龙