Вам нужно перехватить событие закрытия вашего окна, а не приложения.Правильный способ сделать это - создать класс, который наследует от QWidget
или QMainWindow
и переопределить closeEvent
. Если вы не хотите использовать классы, вы можете использовать functools
, как в следующем примере:
import functools
import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QLabel, QMessageBox
def closeEvent(self, event):
choice = QMessageBox.question(self, "Quit", "Do you want to quit chit chat?", QMessageBox.Yes | QMessageBox.No)
if choice == QMessageBox.Yes:
event.accept()
else:
event.ignore()
app = QApplication(sys.argv)
v_box = QVBoxLayout()
window = QWidget()
window.closeEvent = functools.partial(closeEvent, window)
label = QLabel("Hello World")
v_box.addWidget(label)
window.setLayout(v_box)
window.show()
sys.exit(app.exec())