QDialog模态
d = QDialog()
d.setWindowTitle('对话框')
d.resize(300, 180)
'''弹出对话框的3种方法'''
d.exec() # 模态对话框,只有把Dialog窗口干掉才能和window主窗口交互
#d.open() # 非模态对话框,Dialog和window窗口可以同时互动
#d.show() # 非模态对话框,Dialog和window窗口可以同时互动
# 取消模态
d.setModal(False)
QMessageBox
设置不同模态的对话框
mb = QMessageBox(self) # 默认就是open(0:窗口级别模态 对话框
mb.setModal(False) # 取消模态
mb.exec() # 设置为应用程序级别模态窗口
设置内容
# 构造函数
# mb = QMessageBox(QMessageBox.Warning,'窗口标题','<h2>消息</h2>',QMessageBox.Discard | QMessageBox.Ok,self)
mb = QMessageBox(self)
# 设置标题
mb.setWindowTitle('窗口标题') # 设置对话框标题
# 设置文本模式
mb.setTextFormat(Qt.PlainText) # 默认为Qt.AutoText(自动识别)
# 设置主提示
mb.setText('这是主提示') # 设置主提示。可接受html代码
# 设置副提示
mb.setInformativeText('这是副提示')
# 设置详情信息
mb.setDetailedText('<h1>这是详情信息</h1>')
# 设置标准图标
mb.setIcon(QMessageBox.Information)
# 设置自定义图标
# mb.setIconPixmap(QPixmap('./resources/cat.jpg').scaled(1000,800)) #设置主提示
# 设置'勾选框'
mb.setCheckBox(QCheckBox('记住我', mb)) # 不支持html代码
mb.open()

自定义按钮
mb = QMessageBox(QMessageBox.Warning, '窗口标题', '<h2>消息</h2>',QMessageBox.Discard | QMessageBox.Ok, self)
# 设置标准按钮
# mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
# 添加自定义按钮
mb.addButton(QPushButton('自定义yes',mb),QMessageBox.YesRole)
btn = mb.addButton('自定义no',QMessageBox.NoRole)
# 移除按钮
# mb.removeButton(btn)
# 设置默认选择的按钮
mb.setDefaultButton(btn)
# 绑定特殊按钮
mb.setEscapeButton(btn) # 绑定Escape键
mb.open()

文本可复制
mb = QMessageBox(QMessageBox.Warning, '窗口标题', '<h2>消息</h2>', QMessageBox.Yes | QMessageBox.No, self)
# 设置交互权限。注意,仅对主副提示文本起作用(详情信息不起作用)
mb.setTextInteractionFlags(Qt.TextEditorInteraction) # 可以交互(选中复制粘贴...)
mb.open()

内存地址对比
mb = QMessageBox(QMessageBox.Warning, '窗口标题', '<h2>消息</h2>', QMessageBox.Discard | QMessageBox.Ok, self)
mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
def func(btn):
# 内存地址对比
yes_btn = mb.button(QMessageBox.Yes)
no_btn = mb.button(QMessageBox.No)
print('点击了YES' if btn == yes_btn else '点击了NO')
# 角色对比
role = mb.buttonRole(btn)
print('点击了YES' if role == QMessageBox.YesRole else '点击了NO')
mb.buttonClicked.connect(func)
mb.open()
系统封装
PyQt5封装好的对话框
# QMessageBox.about(self, '标题', '提示')
# QMessageBox.aboutQt(self,'标题')
res = QMessageBox.question(self,'标题','提示',QMessageBox.Yes | QMessageBox.No,QMessageBox.No)
print(res) # 这是一个堵塞式弹出

QInputDialog对话框
输入框种类
QInputDialog.getInt(self, '标题', '提示内容', 100, step=5):QInputDialog.getDouble(self, '标题', '提示内容', 100.3, decimals=3)QInputDialog.getText(self, '标题', '提示内容', echo=QLineEdit.Password)QInputDialog.getMultiLineText(self, '标题', '提示内容', '默认值')QInputDialog.getItem(self, '标题', '提示内容', ['wwe1', '1', '2', '3'], 2, True)

显示模式
# 设置对话框样式
i_d = QInputDialog(self,Qt.FramelessWindowHint) # 无边框
# 设置展示方式
i_d.setOption(QInputDialog.UseListViewForComboBoxItems) # 在一个多行文本框展示
# 设置枚举值
i_d.setComboBoxItems(['沙漠皇帝', '影流之主', '暮光之眼']) # 增加3个条目
i_d.show()

输入模式
i_d = QInputDialog(self)
# 改变界面控

本文详细介绍了PyQt5中的QDialog、QMessageBox、QInputDialog、QErrorMessage、QProgressDialog、QFileDialog、QColorDialog、QFontDialog和QCalendarWidget的使用方法,包括模态与非模态对话框、设置内容、自定义按钮、文本交互以及日期选择等功能。

754

被折叠的 条评论
为什么被折叠?



