1. 程式人生 > >PyQt5:訊息視窗(5)

PyQt5:訊息視窗(5)

學習《PyQt4入門指南 PDF中文版.pdf 》筆記

#!/usr/bin/python
# messagebox.py

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMessageBox

class MessageBox(QtWidgets.QWidget):
    def __init__(self,  parent = None):
        QtWidgets.QWidget.__init__(self,  parent)
        
        self.setGeometry(300,  300,  250,  150)
        self.setWindowTitle('Message Box')
    
    def closeEvent(self,  event):
        reply = QMessageBox.question(self,  'Message', 
        "Are you sure to quit?",  QMessageBox.Yes,  QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
        
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv) 
    msgBox = MessageBox()
    msgBox.show()
    sys.exit(app.exec_())

如果我們關閉QWidget視窗,QCloseEvent事件就會被觸發。要改變原有的Widget行為阻止該視窗的關閉,我們就需要重新實現closeEvent()方法。    
reply= QMessageBox.question(self,  'Message',

       "Are you sure to quit?", QMessageBox.Yes,  QMessageBox.No)
         通過上面的語句我們可以顯示一個帶有兩個按鈕(Yes/No)的訊息視窗。第一個字串引數'Message'在訊息視窗的標題欄顯示。第二個字串引數以對話的形式顯示在訊息視窗中。返回的結果被儲存在reply變數中。        
if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
         我們使用上面的if語句來判斷使用者選擇的結果。如果使用者選擇了Yes按鈕,那麼關閉widget視窗並終止應用程式的動作會被允許執行。否則,關閉視窗的動作會被忽略。