pyqt5 привязка клавиши к событию

Знаю про переопределения метода keyPressEvent в классе виджета, но проблема в том, что keyPressEvent вызывается только в случае, если в данный момент виджет активен. Так вот мне нужно, чтобы метод

def keyPressEvent(self, event):
    if event.key() == Qt.Key_Space:
        self.start_and_stop()

вызывался когда активно окно, но когда я переопределяю этот метод в MainWindow, то метод не вызывается, если активен любой другой виджет в окне. Как привязать этот метод к событию нажатия пробела во всем окне включая все его виджеты?


Ответы (1 шт):

Автор решения: denisnumb

Я бы не стал заморачиваться и просто использовал бы другую библиотеку. Например, это можно сделать с помощью модуля keyboard - pip install keyboard

Импортируем библиотеку: import keyboard

В классе виджета привязываем к нажатию кнопки вызов функции:

keyboard.on_press_key(57, keyPressEvent)

*57 - код пробела (можно указать 'space'), keyPressEvent - вызываемая функция

→ Ссылка