I'm trying to create a pop up message box when the "close" button is pressed. my code looks like as follow:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
class Ui_Form(object):
def __init__(self):
super().__init__()
self.stop_request_1 = False
self.stop_request_2 = False
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 180)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
Form.setSizePolicy(sizePolicy)
Form.setMinimumSize(QtCore.QSize(400, 180))
Form.setMaximumSize(QtCore.QSize(400, 180))
self.btn_1 = QtWidgets.QPushButton(Form)
self.btn_1.setGeometry(QtCore.QRect(30, 60, 86, 26))
self.btn_1.setIconSize(QtCore.QSize(20, 20))
self.btn_1.setObjectName("btn_1")
self.btn_2 = QtWidgets.QPushButton(Form)
self.btn_2.setGeometry(QtCore.QRect(250, 60, 86, 26))
self.btn_2.setObjectName("btn_2")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.btn_1.setText(_translate("Form", "btn 1"))
self.btn_2.setText(_translate("Form", "btn 2"))
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Window Close', 'Are you sure you want to close the window?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
print('Window closed')
else:
event.ignore()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
But when I run press the close button, "X", the popup window doesnt work.
The window just closes.
Do you guys know what can be wrong ?