Шаг 64.
Библиотека PyQt5. Обработка сигналов и событий. События клавиатуры. Нажатие и отпускание клавиши на клавиатуре
На этом шаге мы рассмотрим методы, используемые для обработки этих событий.
При нажатии и отпускании клавиши вызываются следующие методы:
- keyPressEvent (self, <event>) - вызывается при нажатии клавиши на клавиатуре. Если клавишу удерживать нажатой, то метод станет многократно вызываться, пока клавиша не будет отпущена;
- keyReleaseEvent (self, <event>) - вызывается при отпускании нажатой ранее клавиши.
Через параметр <event> доступен экземпляр класса QKeyEvent, хранящий дополнительную информацию о событии. Он поддерживает следующие полезные для нас методы
(полный их список приведен в документации по классу QKeyEvent на странице https://doc.qt.io/qt-5/qkeyevent.html):
При обработке нажатия клавиш следует учитывать, что:
- компонент должен иметь возможность принимать фокус ввода. Некоторые компоненты по умолчанию не могут принимать фокус ввода - например, надпись. Чтобы изменить
способ получения фокуса, следует воспользоваться методом setFocusPolicy(<Способ>), который мы рассматривали на 61 шаге;
- чтобы захватить эксклюзивный ввод с клавиатуры, следует воспользоваться методом grabKeyboard(), а чтобы освободить ввод - методом releaseKeyboard();
- можно перехватить нажатие любых клавиш, кроме клавиши Tab и комбинации Shift+Tab. Эти клавиши используются для передачи фокуса следующему и предыдущему компоненту соответственно.
Перехватить нажатие этих клавиш можно только в методе event(self, <event>);
- если событие обработано, следует вызвать метод accept() объекта события. Чтобы родительский компонент смог получить событие, вместо метода accept() необходимо
вызвать метод ignore().
Со следующего шага мы начнем рассматривать события мыши.
Предыдущий шаг
Содержание
Следующий шаг