Original: https://blog.csdn.net/u010139869/article/details/79449315
Essays minor modifications, the inherited methods QDialog changed to QMainWindow
Key components: rewrite closeEvent method of QtWidgets.QMainWindow
# Override closeEvent method, implemented to execute some code dialog window is closed from PyQt5 Import the QtCore, QtGui, QtWidgets Import SYS class Dialog (QtWidgets.QMainWindow): DEF get_thread (Self, main_thread): self.main_thread = main_thread DEF closeEvent (Self , event): "" " override closeEvent method, implemented to execute some code dialog window is closed : param event: close () event triggered : return: None " "" Reply = QtWidgets.QMessageBox.question (Self, ' the present program ', " Do you want to exit the program? " , QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) IF Reply == QtWidgets.QMessageBox.Yes: event.accept () sys.exit (0) the else : event.ignore ()
The complete code
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'dialog.ui' # # Created by: PyQt5 UI code generator 5.10.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(640, 480) self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(370, 80, 113, 32)) self.pushButton.setObjectName("pushButton") self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(140, 80, 113, 21)) self.lineEdit.setObjectName("lineEdit") self.textBrowser = QtWidgets.QTextBrowser(Dialog) self.textBrowser.setGeometry(QtCore.QRect(180, 200, 256, 192)) self.textBrowser.setObjectName("textBrowser") self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(30, 80, 111, 16)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(30, 220, 141, 16)) self.label_2.setObjectName("label_2") self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.pushButton.setText(_translate("Dialog", "PushButton")) self.label.setText(_translate("Dialog", "这是Line Edit ->")) self.label_2.setText(_translate("Dialog", "这是Text Browser ->")) class Dialog(QtWidgets.QMainWindow): """ To rewrite QDialog class, implement some features ." "" def closeEvent(self, event): """ rewrite closeEvent way to achieve dialog window execute some code when closed : param event: close () event is triggered : return: None " "" Reply = QtWidgets.QMessageBox.question ( Self, ' this program ' , ' Do you want to exit the program? " , QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) iF Reply == QtWidgets.QMessageBox.Yes: event.accept () the else : event.ignore () DEF main (): "" " The main function, for running programs : return: None " "" App = QtWidgets.QApplication (the sys.argv) Dialog = Dialog () # in order to modify their rewriting Note Dialog class UI = Ui_Dialog () ui.setupUi (Dialog) with dialog.show () # shows the Dialog class their rewriting the sys.exit (app.exec_ ()) IF the __name__ == ' __main__ ' : main ()