一、QDialog简介
QDialog包含了QErrorMessage、QProgressDialog和QMessageBox三个子类。
二、子类QErrorMessage
1、简单介绍
错误消息小部件由文本标签和复选框组成;
该复选框允许用户控制将来是否再次显示相同的错误消息。
2、功能作用
代码:
1 #*******************QErrorMessage**********************开始
2 from PyQt5.Qt import *
3
4 classWindow(QWidget):5 def __init__(self):6 super().__init__()7 self.setWindowTitle("QErrorMessage")8 self.resize(500, 500)9 self.setup_ui()10
11 defsetup_ui(self):12 #em = QErrorMessage(self)
13 #em.setWindowTitle("错误提示")
14 #em.showMessage("哈哈,明天你好")
15 #em.show()
16
17 #QErrorMessage.qtHandler()
18 ## qDebug("xxxxxx")
19 #qWarning("12344")
20 pass
21
22 if __name__ == '__main__':23 importsys24
25 app=QApplication(sys.argv)26
27 window=Window()28 window.show()29
30 QErrorMessage.qtHandler()31 #qDebug("xxxxxx")
32 qWarning("12344")33
34 sys.exit(app.exec_())35 #*******************QErrorMessage**********************结束
三、子类QProgressDialog
1、简单介绍
提供了一个缓慢的操作进度反馈;进度对话框用于向用户指示操作将花费多长时间,并演示应用程序尚未冻结。
它还可以为用户提供中止操作的机会。
2、构造函数
3、弹出
(1)框架
(2)操作及展示
1 pd =QProgressDialog(self)2 pd.open(lambda: print("对话框被取消"))3 pd.setAutoClose(False) #取消自动关闭
4 #pd.setValue(50)
5 pd.setMinimumDuration(0) #设置等待时间为0
6 for i in range(1, 101):7 pd.setValue(i)
1 pd = QProgressDialog("xx1","xxx2",1,1000,self)
4、界面内容设置
(1)框架
(2)操作及展示
1 #界面内容设置
2 pd.setWindowTitle("进度对话框")3 #其余的一样
5、数据处理+是否取消+自动操作
(1)框架
(2)操作及展示
1 pd.setLabelText("下载进度")2 pd.setCancelButtonText("取消下载")3 pd.setRange(0, 100)4 pd.setValue(95)5 print(pd.minimum())6 #pd.setAutoReset(False) # 取消自动重置
7
8 timer =QTimer(pd)9
10
11 deftest():12 if pd.value() + 1 >= pd.maximum() orpd.wasCanceled():13 timer.stop()14 #自动关闭窗口有三个条件:值达到最大,自动重置,自动关闭属性为True
15 pd.setValue(pd.value() + 1)16
17
18 timer.timeout.connect(test)19 timer.start(1000)
四、子类QMessageBox
1、简单介绍
用于通知用户或请求用户的提问和接收应答一个模态对话框。
2、展示
(1)框架
(2)操作及展示
1 mb =QMessageBox(self)2 #mb.setModal(False) # 设置为非模态
3 mb.setWindowModality(Qt.NonModal) #设置为非模态
4 mb.show()
3、内容展示
(1)对话框标题、图标、主要标题
1 #对话框标题、图标
2 #mb = QMessageBox(QMessageBox.Warning,'xxx1','
xx2
',QMessageBox.Ok | QMessageBox.Discard,self)
3 mb =QMessageBox(self)4 mb.setWindowTitle("消息盒子") #窗口标题
5 mb.setIconPixmap(QPixmap('xxx.png').scaled(50, 50))6 mb.setText("
文件内容已经被修改<.h3>") #主要标题
7 mb.setInformativeText("是否直接关闭,不保存?") #提示信息
8 mb.setCheckBox(QCheckBox("下次不再提醒", mb)) #设置复选框
9 mb.setDetailedText("
你修改的内容是给每一行代码添加了一个分号
") #详情文本
10
11 #主要标题
12 #mb.setTextFormat(Qt.PlainText) # 主要标题设置为普通文本
13 mb.setTextFormat(Qt.RichText) #主要标题设置为富文本
(2)提示文本、详细文本、复选框
在上面已经操作过,参考上面的内容。
按钮的一些详细分类:
按钮的补充内容如下:(两部分)
1 #标准按钮
2 #mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
3
4 #添加/移除角色按钮
5 btn = QPushButton('xxx1', mb)6 mb.addButton(btn, QMessageBox.YesRole)7 #mb.addButton(QPushButton('xxx2',mb),QMessageBox.NoRole)
8 btn2 = mb.addButton('xxx2', QMessageBox.NoRole) #有返回结果
9 #mb.removeButton(btn) # 移除按钮
10 #mb.removeButton(btn2) # 移除按钮
11
12 #默认按钮
13 mb.setDefaultButton(btn2) #默认选中xxx2按钮
14
15 #退出按钮
16 mb.setEscapeButton(btn2) #esc关联btn2
17
18
19 #信号
20 deftest(btn):21 if btn ==btn2:22 print("点击了第二个按钮")23 else:24 print("点击了第一个按钮")25
26
27 mb.buttonClicked.connect(test)28
29 mb.show()
4、文本交互
1 #文本交互
2 mb.setTextInteractionFlags(Qt.TextEditorInteraction) #控制主要标题
5、静态方法
1 #静态方法
2 #QMessageBox.about(self,'xx1','xx2') # 关于对话框
3 #QMessageBox.aboutQt(self,'xx1') # 关于qt
4 result = QMessageBox.question(self, 'xx1', 'xx2', QMessageBox.Ok |QMessageBox.Discard, QMessageBox.Discard)5 print(result, 'xxx')