在很多應用中迹卢,如果要操作一個關(guān)鍵的功能辽故,比如退出應用、刪除文件的時候婶希,往往會有消息彈出窗口請求確認榕暇,讓我們用PyQt彈出消息吧!本文由Cescfangs 譯自ZetCode pyqt5系列教程 并作適當修改喻杈。
先上源代碼:
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox
class exp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(200, 300, 400, 400)
self.setWindowTitle('Quit')
self.show()
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message', 'You sure to quit?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = exp()
sys.exit(app.exec_())
當我們關(guān)閉一個窗口時,就會觸發(fā)一個QCloseEvent
的事件狰晚,正常情況下會直接關(guān)閉這個窗口筒饰,但是我們不希望這樣的事情發(fā)生,所以我們需要重新定義QCloseEvent
:
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message', 'You sure to quit?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
我們通過QMessageBox
創(chuàng)建了一個帶有'Yes'和'No'的對話框壁晒,括號內(nèi)的第一個字符(Message)會顯示在信息窗口的上方瓷们,第二個字符(You sure to quit?)則是出現(xiàn)在信息窗口的正文中,第三個參數(shù)則說明了兩個按鈕在對話框上的布置谬晕,最后一個參數(shù)確定了默認選項碘裕,也就是彈出對話框的時候,鍵盤的默認焦點所在攒钳。最后返回的結(jié)果會存儲在reply
中帮孔。
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
如果我們按下了'Yes',那么這個窗口就會被關(guān)閉不撑,如果我們按下的是'No'文兢,那么系統(tǒng)會忽視我們點擊‘X’的這個事件。
對話框