python - 在 Python (PyQt5) 中使用子类处理 keyPressEvent
问题描述
我正在尝试在一个子类中实现 keyPressEvent,该子类在另一个文件中,而不是由 Qt 设计器生成的 .ui 文件,因为我想在我的 GUI 中保持设计和逻辑彼此分离。我尝试做类似我在此链接中找到的操作(重新设计用户界面后 QtDesigner 更改将丢失),但不明白如何在设计文件中实现它。
设计文件:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
[removed non relevant parts in the setup]
self.searchButton = QtWidgets.QPushButton(self.centralwidget)
self.searchButton.setGeometry(QtCore.QRect(30, 85, 110, 33))
self.searchButton.setObjectName("searchButton")
self.searchBox = QtWidgets.QLineEdit(self.centralwidget)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.searchButton.setText(_translate("MainWindow", "Search"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
逻辑文件:
class Logic(QWidget, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setupUi(self)
def keyPressEvent(self, event):
print ("something was pressed")
如何使逻辑文件中的 keyPressEvent 函数在 GUI 中按下某个键时执行?
解决方案
推荐阅读
- python - 如何将类实例转发到依赖文件?
- ios - Xcode 无法构建 React Native 项目,架构 x86_64 的未定义符号
- python - tkinter 我如何理解没有说什么错误的错误?
- css - 在 MS powerapps 控件中使用 react-bootstrap-typeahead 时,下拉列表隐藏在其他输入字段下
- hyperledger-fabric - 中间 CA 不创建 tls-cert.pem
- python - 在同一个类中使用另一个函数的输出
- node.js - 更新矩阵中的元素,该矩阵是嵌套在另一个文档中的文档的字段
- postgresql - Postgres 中的共享扫描
- reactjs - 更改文本输入中的字体大小根据屏幕大小做出本机反应
- javascript - Webpack 外部反应导致 React Hooks 错误