PyQt5:訊息視窗(5)
阿新 • • 發佈:2019-01-01
學習《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語句來判斷使用者選擇的結果。如果使用者選擇了Yes按鈕,那麼關閉widget視窗並終止應用程式的動作會被允許執行。否則,關閉視窗的動作會被忽略。if reply == QMessageBox.Yes: event.accept() else: event.ignore()