PyQt5Day29--展示控件QDialog(对话框)

一、QDialog简介

  QDialog包含了QErrorMessage、QProgressDialog和QMessageBox三个子类。

二、子类QErrorMessage

1、简单介绍

  错误消息小部件由文本标签和复选框组成;

  该复选框允许用户控制将来是否再次显示相同的错误消息。

2、功能作用

代码:

 1 # *******************QErrorMessage**********************开始
 2 from PyQt5.Qt import *
 3 
 4 class Window(QWidget):
 5     def __init__(self):
 6         super().__init__()
 7         self.setWindowTitle("QErrorMessage")
 8         self.resize(500, 500)
 9         self.setup_ui()
10 
11     def setup_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     import sys
24 
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 def test():
12     if pd.value() + 1 >= pd.maximum() or pd.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','<h2>xx2</h2>',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>文件内容已经被修改<.h3>")  # 主要标题
 7 mb.setInformativeText("是否直接关闭,不保存?")  # 提示信息
 8 mb.setCheckBox(QCheckBox("下次不再提醒", mb))  # 设置复选框
 9 mb.setDetailedText("<h4>你修改的内容是给每一行代码添加了一个分号</h4>")  # 详情文本
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 def test(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')

 

posted @ 2020-05-05 14:36  红叶楠木  阅读(490)  评论(0编辑  收藏  举报