QMainWindow fire KeyPress event to full application

24 Views Asked by At
class CustomQMainWindow(QtWidgets.QMainWindow):
    def __init__(self,*args,**kwargs):
        super().__init__(*args, **kwargs)

        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(lambda: self.install_filter())
        self.timer.setSingleShot(True)
        self.timer.start(2000)

    def install_filter(self):
        # space as shortcut for hold (microphone)
        self.installEventFilter(self)

    def eventFilter(self, obj, event):
        try:
            if event.type() == QtCore.QEvent.KeyPress:
                if event.key() == QtCore.Qt.Key_Space:
                    print("Space pressed")
                    return True
            elif event.type() == QtCore.QEvent.KeyRelease:
                if event.key() == QtCore.Qt.Key_Space:
                    print("Space released")
                    return True
            return super(CustomQMainWindow, self).eventFilter(obj, event)
        except:
            print(traceback.format_exc())

I have made this code but the keyPress event is not fired. It just holds one focus QPushButton.

What can i do to fire the keyPress/keyRelease events even QMainWindow has it's focus to one child widget?

0

There are 0 best solutions below