pyqt5 привязка клавиши к событию
Знаю про переопределения метода keyPressEvent в классе виджета, но проблема в том, что keyPressEvent вызывается только в случае, если в данный момент виджет активен. Так вот мне нужно, чтобы метод
def keyPressEvent(self, event):
if event.key() == Qt.Key_Space:
self.start_and_stop()
вызывался когда активно окно, но когда я переопределяю этот метод в MainWindow, то метод не вызывается, если активен любой другой виджет в окне. Как привязать этот метод к событию нажатия пробела во всем окне включая все его виджеты?
Ответы (1 шт):
Я бы не стал заморачиваться и просто использовал бы другую библиотеку. Например, это можно сделать с помощью модуля keyboard - pip install keyboard
Импортируем библиотеку: import keyboard
В классе виджета привязываем к нажатию кнопки вызов функции:
keyboard.on_press_key(57, keyPressEvent)
*57 - код пробела (можно указать 'space'), keyPressEvent - вызываемая функция