一、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')