gpt4 book ai didi

python - PyQt5 keyPressEvent 的工作原理

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:25 25 4
gpt4 key购买 nike

我从 PyQt GPL v5.4 创建一个 UI 并使用 pyuic5 将 *.ui 文件转换为 *.py

但我不知道 keyPressEvent 在这段代码中是如何工作的!!

它应该适用于 QWidget,但如何让它发挥作用。

请帮忙!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget

class Ui_MainWindow(QWidget,object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(200, 200)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("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"))\

def keyPressEvent(self, e):
if e.key() == Qt.Key_F5:
self.close()


if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QWidget()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

最佳答案

在开始我的回答之前的一个建议,不要修改生成 Qt Designer 的类,在你的例子中我认为你使用了模板 MainWindow,在下面的代码中我添加了一些你已经删除的代码,什么您必须做的是创建一个实现生成的 View 的新类:

View :

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"))

实现 View 的类必须从模板类继承,在您的 QMainWindow 的情况下,除了调用父构造函数之外,还使用 ​​setupUI 方法,即在您的 QMainWindow 的情况下。

逻辑:

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 方法已经可以工作了。

关于python - PyQt5 keyPressEvent 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45308101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com