注意的是当我们要退出一个QWidget组件时, 会产生一个QCloseEvent事件,如果我们想要改变widget组件默认的行为,我们就需要去重写QWidget.closeEvent()这个函数。
然后QMessageBox.question:
"""
question(QWidget, str, str,
buttons: Union[QMessageBox.StandardButtons,
QMessageBox.StandardButton] = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No),
defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton) ->
QMessageBox.StandardButton
"""
# coding='utf-8'
from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox
import sys
class Gui(QWidget):
def __init__(self):
super().__init__()
self.start()
def start(self):
self.setGeometry(250, 250, 500, 600)
self.setWindowTitle('MessageBox 测试')
self.show()
def closeEvent(self, event) -> None:
reply = QMessageBox.question(self, '提示', '是否离开?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.No:
event.ignore()
else:
event.accept()
win = QApplication(sys.argv)
gun = Gui()
sys.exit(win.exec_())
运行结果:
image.png
网友评论