天天看點

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

一、QDialog簡介

QDialog包含了QErrorMessage、QProgressDialog和QMessageBox三個子類。

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

二、子類QErrorMessage

1、簡單介紹

錯誤消息小部件由文本标簽和複選框組成;

該複選框允許使用者控制将來是否再次顯示相同的錯誤消息。

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

2、功能作用

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

代碼:

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、簡單介紹

提供了一個緩慢的操作進度回報;進度對話框用于向使用者訓示操作将花費多長時間,并示範應用程式尚未當機。

它還可以為使用者提供中止操作的機會。

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

2、構造函數

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

3、彈出

(1)架構

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

(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)

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

4、界面内容設定

(1)架構

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

(2)操作及展示

1 #界面内容設定

2 pd.setWindowTitle("進度對話框")3 #其餘的一樣

5、資料處理+是否取消+自動操作

(1)架構

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)
pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)
pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

(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、簡單介紹

用于通知使用者或請求使用者的提問和接收應答一個模态對話框。

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

2、展示

(1)架構

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

(2)操作及展示

1 mb =QMessageBox(self)2 #mb.setModal(False) # 設定為非模态

3 mb.setWindowModality(Qt.NonModal) #設定為非模态

4 mb.show()

3、内容展示

(1)對話框标題、圖示、主要标題

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

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)提示文本、詳細文本、複選框

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

在上面已經操作過,參考上面的内容。

按鈕的一些詳細分類:

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

按鈕的補充内容如下:(兩部分)

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)
pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

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()

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

4、文本互動

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

1 #文本互動

2 mb.setTextInteractionFlags(Qt.TextEditorInteraction) #控制主要标題

5、靜态方法

pyqt5設定dialog的标題_PyQt5Day29--展示控件QDialog(對話框)

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