I'm trying to implement keyPressEvent in a subclass which I have in another file than the .ui-file that is generated by the Qt designer, as I want to keep the design and logic separated from each other in my GUI. I tried doing something like what I found in this link (QtDesigner changes will be lost after redesign User Interface) , but don't understand how to implement it in the design file.
Design file:
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_())
Logic file:
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")
How can I make it so that keyPressEvent function in the logic file will execute when a key is pressed while in the GUI?