该
closeEvent是一个方法
QMainwindow,但你想从你自己使用它
Ui_MainWindow的类。尝试以下方法:
from PyQt4 import QtCore, QtGuiclass MainWindow(QtGui.QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setupUi() def setupUi(self): self.setObjectName("MainWindow") self.resize(277, 244) self.statusbar = QtGui.QStatusBar() self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) def closeEvent(self,event): result = QtGui.QMessageBox.question(self,"Confirm Exit...","Are you sure you want to exit ?",QtGui.QMessageBox.Yes| QtGui.QMessageBox.No) event.ignore() if result == QtGui.QMessageBox.Yes: event.accept()if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_())如果要保留尽可能多的结构,请尝试以下操作:
from PyQt4 import QtCore, QtGuiclass Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(277, 244) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) QtCore.QmetaObject.connectSlotsByName(MainWindow) MainWindow.show()class MyWindow(QtGui.QMainWindow): def closeEvent(self,event): result = QtGui.QMessageBox.question(self,"Confirm Exit...","Are you sure you want to exit ?",QtGui.QMessageBox.Yes| QtGui.QMessageBox.No) event.ignore() if result == QtGui.QMessageBox.Yes: event.accept()if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) MainWindow = MyWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) sys.exit(app.exec_())


