开始我的答案之前的建议,不要修改生成Qt
Designer的类,在您的情况下,我想您使用的名称是模板MainWindow,在以下代码中,我添加了一些已删除的代码,您必须执行的操作创建一个新类,该类实现生成的视图:
视图:
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(200, 200) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.setCentralWidget(self.centralwidget) self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(50, 110, 75, 23)) self.pushButton.setObjectName("pushButton") self.retranslateUi(MainWindow) QtCore.QmetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "PushButton"))在您使用QMainWindow的情况下,实现视图的类必须从模板的类继承,并且除了调用父构造函数(即您在QMainWindow的情况)之外,还必须使用setupUI方法。
逻辑:
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent=parent) self.setupUi(self) def keyPressEvent(self, e): if e.key() == Qt.Key_F5: self.close()if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_())
经过这些修改,keyPressEvent方法已经可以使用。



