默認情況下,如果我們點擊標題欄上的 X 按鈕,QWidget 關閉。有時候,我們需要改變這個默認行為。例如,如果我們有一個文件,要在編輯器中打開,我們可以先顯示一個消息框,確認打開與否的操作。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
當我們點擊應用程序窗口的關閉按鈕,該程序顯示一個確認信息框。
作者:我的世界你曾經來過
博客:http://blog.csdn.net/weiaitaowang
最后編輯:2016年7月29日
"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('消息盒子')
self.show()
def closeEvent(self, event):
reply = QMessageBox.question(self, '信息', '確認退出嗎?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
如果我們關閉 QWidget控件,將產生 QCloseEvent 事件。修改控件特性我們需要重新實現 closeEvent() 事件處理程序。
reply = QMessageBox.question(self, '信息', '確認退出嗎?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
我們顯示一個消息框,它有兩個按鈕:Yes和No。第一個字符串出現在標題欄。第二個字符串是對話框中顯示的消息文本。第三個參數指定彈出的對話框中的按鈕組合。最后一個參數是默認按鈕,它是具有初始鍵盤焦點的按鈕。返回值被存儲在reply 變量中。
if reply == QMessageBox.Yes: event.accept() else: event.ignore()
在這里我們使用 if 測試返回值。如果我們點擊 Yes 按鈕,我們接受了按鈕控件的關閉并執行應用程序的終止事件。否則,我們忽略關閉事件。
程序執行后點擊右上角的 x 彈出確認退出消息盒子

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。