繼承於 QDialog app
對話框的構成:函數
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox,QCheckBox from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap class Demo(QWidget): def __init__(self): super(Demo, self).__init__() mb=QMessageBox(self) #建立信息對話框 #繼承於QDialog,須要show,exec,open來彈出 #默認是一個模態對話框,即便show彈出的對話框也是模態的 #mb = QMessageBox(QMessageBox.NoIcon,'對話框標題','<h2>主要標題信息</h2>',QMessageBox.Ok | QMessageBox.Discard ,self) #參數1 圖標: #QMessageBox.NoIcon 沒有圖標 # QMessageBox.Warning 警告圖標 #QMessageBox.Critical 嚴重問題圖標 #QMessageBox.Information 沒有任何異常圖標 #QMessageBox.Question 提問圖標 #參數2 對話框標題 #參數3 主要標題信息--能夠是富文本 #參數4 按鈕: #QMessageBox.Ok 使用AcceptRole定義的「肯定」按鈕 #QMessageBox.Discard 「丟棄」或「不保存」按鈕,具體取決於使用DestructiveRole定義的平臺 #QMessageBox.Open 使用AcceptRole定義的「打開」按鈕。 #QMessageBox.Save 使用AcceptRole定義的「保存」按鈕。 #QMessageBox.Cancel 使用RejectRole定義的「取消」按鈕。 #QMessageBox.Close 使用RejectRole定義的「關閉」按鈕。 #QMessageBox.Apply 使用ApplyRole定義的「應用」按鈕。 #QMessageBox.Reset 使用ResetRole定義的「重置」按鈕。 #QMessageBox.RestoreDefaults 使用ResetRole定義的「恢復默認值」按鈕。 #QMessageBox.SaveAll 使用AcceptRole定義的「所有保存」按鈕。 #QMessageBox.Yes 使用YesRole定義的「是」按鈕。 #QMessageBox.YesToAll 使用YesRole定義的「Yes to All」按鈕。 #QMessageBox.No 使用NoRole定義的「否」按鈕。 #QMessageBox.Help 使用HelpRole定義的「幫助」按鈕。 #QMessageBox.NoToAll 使用NoRole定義的「No to All」按鈕。 #QMessageBox.Abort 使用RejectRole定義的「Abort」按鈕。 #QMessageBox.Retry 使用AcceptRole定義的「重試」按鈕。 #QMessageBox.Ignore 使用AcceptRole定義的「忽略」按鈕。 #QMessageBox.NoButton 無效按鈕。 self.mb=mb #mb.setModal(False) #設置是否模態對話框 mb.setWindowModality(Qt.NonModal) #設置成非模態 mb.setIcon(QMessageBox.Question) #設置標準圖標 mb.setIconPixmap(QPixmap('./大象.png').scaled(100,100)) #用自定義圖像作圖標 mb.setTextFormat(Qt.AutoText) #設置文本格式 #Qt.PlainText 普通文本 #Qt.RichText 富文本--默認 #Qt.AutoText 自動識別 mb.setText('<h2>我是主要標題信息</h2>') #設置主要標題信息---支持富文本 mb.setInformativeText('<h3>提示信息</h3>') #設置提示信息---支持富文本 #informativeText() 返回提示文本 mb.setCheckBox(QCheckBox('複選框',mb)) #設置複選框 mb.setDetailedText('我是詳細文本') #設置詳細文本---不支持富文本 #按鈕: mb.setStandardButtons(QMessageBox.Yes ) #添加標準按鈕 #設置了Yes和No按鈕 #按鈕類型看上面 btn=QPushButton('按鈕1',mb) mb.addButton(btn,QMessageBox.YesRole) #添加自定義按鈕--方式一 btn1=mb.addButton('按鈕2', QMessageBox.NoRole) #方式二 #參數2 按鈕角色: #YesRole 按鈕是一個「是」的按鈕 #InvalidRole 該按鈕無效 #AcceptRole 單擊該按鈕將使對話框被接受(例如,肯定) #RejectRole 單擊該按鈕會致使拒絕對話框(例如取消) #DestructiveRole 單擊該按鈕會致使破壞性更改(例如,對於Discarding Changes)並關閉對話框 #ActionRole 單擊該按鈕將致使更改對話框中的元素 #HelpRole 能夠單擊該按鈕以請求幫助。 #NoRole 按鈕是一個「無」按鈕。 #ApplyRole 該按鈕應用當前更改。 #ResetRole 該按鈕將對話框的字段重置爲默認值。 #返回值:按鈕對象 btn5=mb.button(QMessageBox.Yes) #返回標準按鈕的對象 s=mb.buttonRole(btn1) #返回按鈕的角色對象 #mb.removeButton(btn1) #移除按鈕 mb.setDefaultButton(btn1) #設置自定義默認按鈕 mb.setDefaultButton(QMessageBox.Yes) #設置標準默認按鈕 s=mb.defaultButton() #返回默認按鈕 mb.setEscapeButton(btn1) #設置ESC所對應的按鈕--自定義 mb.setEscapeButton(QMessageBox.Yes) #設置ESC所對應的按鈕--標準按鈕 mb.setTextInteractionFlags(Qt.NoTextInteraction) #設置文本交互標誌--針對主要標題信息 #Qt.TextEditorInteraction 容許文本交互---容許編輯 #Qt.NoTextInteraction 不容許交互 #信號: mb.buttonClicked.connect(self.AA) #按鈕被點擊時發出信號 #會把被點擊的按鈕對象傳遞給槽函數 print(s) mb.show() def AA(self,bt): print('按鈕被點擊了',bt) print('點擊的按鈕是:', self.mb.clickedButton()) # clickedButton() #返回被點擊的按鈕 if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
QMessageBox.about(self,'xx1','xx2') #展現關於消息框
#參數2 對話框標題
#參數3 提示消息
r=QMessageBox.question(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展現提問消息框
#參數4 按鈕
#參數5 默認按鈕
#返回值:整型值 按鈕的編碼
r=QMessageBox.warning(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展現警告消息框
#參數4 按鈕
#參數5 默認按鈕
#返回值:整型值 按鈕的編碼
r=QMessageBox.critical(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展現警告消息框
#參數4 按鈕
#參數5 默認按鈕
#返回值:整型值 按鈕的編碼
r=QMessageBox.information(self,'xx1','xx2',QMessageBox.Yes | QMessageBox.No,QMessageBox.No) #展現警告消息框
#參數4 按鈕
#參數5 默認按鈕
#返回值:整型值 按鈕的編碼
天子驕龍ui
天子驕龍編碼