Шаг 69.
Библиотека PyQt5.
Обработка сигналов и событий. События мыши. Прокрутка колесика мыши
На этом шаге мы рассмотрим методы, используемые для обработки этого события.
Все современные мыши комплектуются колесиком, обычно используемым для прокрутки содержимого компонента. Обработать поворот колесика позволяет метод wheelEvent (self, <event>).
Через параметр <event> доступен экземпляр класса QWheelEvent, который позволяет получить дополнительную информацию о событии.
Класс QWheelEvent поддерживает методы:
- angleDelta () - возвращает угол поворота колесика в градусах, умноженный на 8, в виде экземпляра класса QPoint. Это значение может быть положительным или отрицательным -
в зависимости от направления поворота. Пример определения угла поворота колесика:
angle = e.angleDelta() / 8
angleX = angle.x()
angleY = angle.y()
- pixelDelta () - возвращает величину поворота колесика в пикселях в виде экземпляра класса QPoint. Это значение может быть положительным или отрицательным - в зависимости от направления поворота;
- х () и y () - возвращают координаты указателя в момент события по осям X и Y соответственно в пределах области компонента;
- pos () - возвращает экземпляр класса QPoint с целочисленными координатами указателя в момент события в пределах области компонента;
- posF () - возвращает экземпляр класса QPointF с вещественными координатами указателя в момент события в пределах области компонента;
- globalX () и globalY () - возвращают координаты указателя в момент события по осям X и Y соответственно в пределах экрана;
- globalPos () - возвращает экземпляр класса QPoint с целочисленными координатами указателя в момент события в пределах экрана;
- globalPosF () - возвращает экземпляр класса QPointF с вещественными координатами указателя в момент события в пределах экрана;
- buttons () - позволяет определить кнопки, которые нажаты одновременно с поворотом колесика. Возвращает комбинацию значений атрибутов, перечисленных в описании метода
button() (смотри 66 шаг). Пример определения нажатой кнопки мыши:
if e.buttons() & QtCore.Qt.LeftButton:
print("Нажата левая кнопка мыши")
- modifiers () - позволяет определить, какие клавиши-модификаторы (Shift, Ctrl, Alt и другие) были нажаты одновременно с поворотом колесика. Возможные значения мы уже
рассматривали на 64 шаге;
- timestamp () - возвращает в виде числа отметку системного времени, в которое возникло событие.
Если событие было успешно обработано, необходимо вызвать метод accept() объекта события. Чтобы родительский компонент мог получить событие, вместо метода accept() необходимо вызвать метод ignore().
На следующем шаге мы рассмотрим изменение внешнего вида указателя мыши.
Предыдущий шаг
Содержание
Следующий шаг