久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

pyqt中各種消息框的使用

 冬木*細雪 2015-06-30

 在實際的程序開發(fā)中,,經(jīng)常會用到各種各樣的消息框來給用戶一些提示或提醒,Qt提供了QMessageBox類來實現(xiàn)此項功能,。在本實例中,,分析了各種消息框的使用方式及之間的區(qū)別。各種消息框的使用如圖所示:

實現(xiàn)代碼如下:

  1. -*- coding: utf-8 -*-   
  2. from PyQt4.QtGui import  
  3. from PyQt4.QtCore import  
  4. import sys  
  5.   
  6. QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))  
  7.   
  8. class MessageBoxDlg(QDialog):  
  9.     def __init__(self,parent=None):  
  10.         super(MessageBoxDlg,self).__init__(parent)  
  11.         self.setWindowTitle("Messagebox" 
  12.         self.label=QLabel("About Qt MessageBox" 
  13.         questionButton=QPushButton("Question" 
  14.         informationButton=QPushButton("Information" 
  15.         warningButton=QPushButton("Warning" 
  16.         criticalButton=QPushButton("Critical" 
  17.         aboutButton=QPushButton("About" 
  18.         aboutqtButton=QPushButton("About Qt" 
  19.         customButton=QPushButton("Custom" 
  20.   
  21.         gridLayout=QGridLayout(self)  
  22.         gridLayout.addWidget(self.label,0,0,1,2)  
  23.         gridLayout.addWidget(questionButton,1,0)  
  24.         gridLayout.addWidget(informationButton,1,1)  
  25.         gridLayout.addWidget(warningButton,2,0)  
  26.         gridLayout.addWidget(criticalButton,2,1)  
  27.         gridLayout.addWidget(aboutButton,3,0)  
  28.         gridLayout.addWidget(aboutqtButton,3,1)  
  29.         gridLayout.addWidget(customButton,4,0)  
  30.   
  31.         self.connect(questionButton,SIGNAL("clicked()"),self.slotQuestion)  
  32.         self.connect(informationButton,SIGNAL("clicked()"),self.slotInformation)  
  33.         self.connect(warningButton,SIGNAL("clicked()"),self.slotWarning)  
  34.         self.connect(criticalButton,SIGNAL("clicked()"),self.slotCritical)  
  35.         self.connect(aboutButton,SIGNAL("clicked()"),self.slotAbout)  
  36.         self.connect(aboutqtButton,SIGNAL("clicked()"),self.slotAboutQt)  
  37.         self.connect(customButton,SIGNAL("clicked()"),self.slotCustom)  
  38.   
  39.     def slotQuestion(self):  
  40.         button=QMessageBox.question(self,"Question" 
  41.                                     self.tr("已到達文檔結尾,是否從頭查找?"),  
  42.                                     QMessageBox.Ok|QMessageBox.Cancel,  
  43.                                     QMessageBox.Ok)  
  44.         if button==QMessageBox.Ok:  
  45.             self.label.setText("Question button/Ok" 
  46.         elif button==QMessageBox.Cancel:  
  47.             self.label.setText("Question button/Cancel" 
  48.         else 
  49.             return  
  50.   
  51.     def slotInformation(self):  
  52.         QMessageBox.information(self,"Information" 
  53.                                 self.tr("填寫任意想告訴于用戶的信息!"))  
  54.         self.label.setText("Information MessageBox" 
  55.   
  56.     def slotWarning(self):  
  57.         button=QMessageBox.warning(self,"Warning" 
  58.                                    self.tr("是否保存對文檔的修改?"),  
  59.                                    QMessageBox.Save|QMessageBox.Discard|QMessageBox.Cancel,  
  60.                                    QMessageBox.Save)  
  61.         if button==QMessageBox.Save:  
  62.             self.label.setText("Warning button/Save" 
  63.         elif button==QMessageBox.Discard:  
  64.             self.label.setText("Warning button/Discard" 
  65.         elif button==QMessageBox.Cancel:  
  66.             self.label.setText("Warning button/Cancel" 
  67.         else 
  68.             return  
  69.   
  70.     def slotCritical(self):  
  71.         QMessageBox.critical(self,"Critical" 
  72.                              self.tr("提醒用戶一個致命的錯誤!"))  
  73.         self.label.setText("Critical MessageBox" 
  74.   
  75.     def slotAbout(self):  
  76.         QMessageBox.about(self,"About",self.tr("About事例"))  
  77.         self.label.setText("About MessageBox" 
  78.   
  79.     def slotAboutQt(self):  
  80.         QMessageBox.aboutQt(self,"About Qt" 
  81.         self.label.setText("About Qt MessageBox" 
  82.   
  83.     def slotCustom(self):  
  84.         customMsgBox=QMessageBox(self)  
  85.         customMsgBox.setWindowTitle("Custom message box" 
  86.         lockButton=customMsgBox.addButton(self.tr("鎖定"),  
  87.                                           QMessageBox.ActionRole)  
  88.         unlockButton=customMsgBox.addButton(self.tr("解鎖"),  
  89.                                             QMessageBox.ActionRole)  
  90.         cancelButton=customMsgBox.addButton("cancel",QMessageBox.ActionRole)  
  91.   
  92.         customMsgBox.setText(self.tr("這是一個自定義消息框!"))  
  93.         customMsgBox.exec_()  
  94.   
  95.         button=customMsgBox.clickedButton()  
  96.         if button==lockButton:  
  97.             self.label.setText("Custom MessageBox/Lock" 
  98.         elif button==unlockButton:  
  99.             self.label.setText("Custom MessageBox/Unlock" 
  100.         elif button==cancelButton:  
  101.             self.label.setText("Custom MessageBox/Cancel" 
  102.    
  103. app=QApplication(sys.argv)  
  104. MessageBox=MessageBoxDlg()  
  105. MessageBox.show()  
  106. app.exec_()  

 

本實例主要分析7種類型的消息框,,包括Question消息框,,Information消息框,Warning消息框,,Critical消息框,,About消息框,About Qt消息框以及Custom自定義消息框,。
Question消息框,,Information消息框,Warning消息框和Critical消息框的用法大同小異,,這些消息框一般都包含一條提示信息,,一個圖標以及若干個按鈕,它們的作用都是給用戶提供一些提醒或一些簡單的詢問,。按圖標的不同可區(qū)分為以下4個級另
Question:為正常的操作提供一個簡單的詢問,。
Information:為正常的操作提供一個提示。
Warning:提醒用戶發(fā)生了一個錯誤,。
Critical:警告用戶發(fā)生了一個嚴重錯誤,。
下面分別對各種消息框的使用方法進行分析。

下圖為Question消息框,。


關于Question消息框,,調(diào)用時直接使用QMessageBox.question()即可。

第一個參數(shù)為消息框的父窗口指針,。

第二個參數(shù)為消息框的標題欄,。

第三個參數(shù)為消息框的文字提示信息,前3個參數(shù)對于其他幾種消息框基本是一樣的,。

后面兩個參數(shù)都是對消息框按鈕的設定,,QMessageBox類提供了許多標準按鈕,,如QMessageBox.Ok,QMessageBox.Close,QMessageBox.Discard等,具體可查問Qt幫助,。

第四個參數(shù)即填寫希望在消息框中出現(xiàn)的按鈕,,可根據(jù)需要在標準按鈕中選擇,用“|”連寫,,默認為QMessageBox.Ok,。

第五個參數(shù)為默認按鈕,即消息框出現(xiàn)時,,焦點默認處于哪個按鈕上,。

函數(shù)的返回值為按下的按鈕,當用戶按下Escape鍵時,,相當于返回QMessageBox.Cancel,。

如下圖所示為Information消息框。

Information消息框使用頻率最高也最簡單,,直接調(diào)用QMessageBox.information()即可,。

第一個參數(shù)為消息框的父窗口指針。

第二個參數(shù)為消息框的標題欄,。

第三個參數(shù)為消息框的文字提示信息,。

后面的兩個參數(shù)與Qustion消息框的用法一樣,但在使用的過程中,,經(jīng)常會省略后兩個參數(shù),,直接使用默認的QMessageBox.Ok按鈕。

Information消息框和Question消息框可以通用,,使用權Question消息框的地方都可以使用Information消息框替換,。

如下圖所示為Warning消息框。

Warning消息框的最常用法為當用戶進行了一個非正常操作時,,提醒用戶并詢問是否進行某項操作,,如關閉文檔,提醒并詢問用戶是否保存對文檔的修改,。實例中實現(xiàn)的即是此操作,。

函數(shù)調(diào)用的方式與前面Question消息框的調(diào)用方式大致相同。

第一個參數(shù)為消息框的父窗口指針,。

第二個參數(shù)為消息框的標題欄,。

第三個參數(shù)為消息框的文字提示信息,

第四個參數(shù)為希望在消息框中出現(xiàn)的按鈕,,可根據(jù)需要在標準按鈕中選擇,,用“|”連寫,,默認為QMessageBox.Ok,。

第五個參數(shù)為默認按鈕,,即消息框出現(xiàn)時,焦點默認處于哪個按鈕上,。

如下圖所示為Critical消息框,。

Critical消息框是在系統(tǒng)出現(xiàn)嚴重錯誤時對用戶進行提醒的。它的用法也相對簡單,,通常情況下和Information消息框一樣,,在調(diào)用時只填寫前3個參數(shù)即可。

如下圖所示為About消息框,。

About消息框一般用于提供系統(tǒng)的版本等信息,。只需提供信息而并不需要用戶反饋信息,因此它的用法相對簡單,,直接調(diào)用QMessageBox.about(),,并只用指定消息框父窗口,標題欄以及信息的內(nèi)容即可,。

在介紹完以上幾種基本消息框的用法后,,還有兩種特殊的消息框類型,分別是“About Qt消息框”以及自定義消息框,。

如下圖所示為About Qt消息框,。

 

“About Qt消息框”是Qt預定好的一種消息框,用于提供Qt的相關信息,,只需直接調(diào)用QMessageBox.aboutQt(),,并提定父窗口和標題欄即可,其中顯示的內(nèi)容是Qt預定義好的,。

最后,,當以上所有的消息框都不能滿足開發(fā)的需求時,Qt還允許Custom自定義消息框,。包括消息框的圖標,,按鈕,內(nèi)容等都可根據(jù)需要進行設定,。本實例中即實現(xiàn)了一個如下圖所示的自定義消息框,。

在slotCustom()函數(shù)中,第84行首先創(chuàng)建一個QMessageBox對象customMsgBox,。第85行設置此消息框的標題欄為Custom message box,。

第86-90行定義消息框所需的按鈕,因此QMessageBox類提供了一個addButton()函數(shù)來為消息框增加自定義按鈕,,addButton()函數(shù)的第一個參數(shù)為按鈕顯示的文字,,第二個參數(shù)為按鈕類型的描述,具體可查閱QMessageBox.ButtonRole,,當然也可使用addButton()函數(shù)來加入一個標準按鈕,。如第90行在消息框中加入了一個QMessageBox.Cancel按鈕,。消息框將會按調(diào)用addButton()的先后次序在消息框中由左至右依次插入按鈕。

第92行調(diào)用setText設置自定義消息框中顯示的提示信息內(nèi)容,。

第93行調(diào)用exec()顯示此自定義消息框,。

后面幾行代碼完成的都是實例中一些顯示的功能,此處不再討論,。

通過本實例的分析可見,,Qt提供的消息框類型基本涵蓋了開發(fā)應用中使用的各種情況,并且提供了自定義消息框的方式,,滿足各種特殊的需求,,在實際應用中關鍵是分析實際的應用需求,根據(jù)不同的應用環(huán)境選擇最合適的消息框,,以使程序簡潔而合理,。


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多