Шаг 239.
Библиотека PyQt5.
Графическая сцена. Обработка событий. Обработка изменения состояния объекта
На этом шаге мы рассмотрим особенности использования метода itemChange().
Чтобы обработать изменение состояния объекта, следует переопределить метод itemChange (self, <Состояние>, <Значение>) в классе графического объекта. Метод
должен возвращать новое значение. Через параметр <Состояние> доступно состояние, которое было изменено, в виде значения одного из следующих атрибутов класса
QGraphicsItem (здесь перечислены только основные - полный их список находится на странице
https://doc.qt.io/qt-5/qgraphicsitem.html#GraphicsItemChange-enum):
- ItemEnabledChange (или 3) - изменилось состояние доступности;
- ItemEnabledHasChanged (или 13) - изменилось состояние доступности. Возвращаемое значение игнорируется;
- ItemPositionChange (или 0) - изменилась позиция объекта. Метод будет вызван, только если установлен флаг ItemSendsGeometryChanges;
- ItemPositionHasChanged (или 9) - изменилась позиция объекта. Метод будет вызван, только если установлен флаг ItemSendsGeometryChanges. Возвращаемое значение игнорируется;
- ItemScenePositionHasChanged (или 27) - изменилась позиция объекта на сцене с учетом преобразований, примененных к самому объекту и его родителям. Метод будет вызван, только если установлен
флаг ItemSendsScenePositionChanges. Возвращаемое значение игнорируется;
- ItemTransformChange (или 8) - изменилась матрица преобразований. Метод будет вызван, только если установлен флаг ItemSendsGeometryChanges;
- ItemTransformHasChanged (или 10) - изменилась матрица преобразований. Метод будет вызван, только если установлен флаг ItemSendsGeometryChanges. Возвращаемое значение игнорируется;
- ItemSelectedChange (или 4) - изменилось выделение объекта;
- ItemSelectedHasChanged (или 14) - изменилось выделение объекта. Возвращаемое значение игнорируется;
- ItemVisibleChange (или 2) - изменилось состояние видимости объекта;
- ItemVisibleHasChanged (или 12) - изменилось состояние видимости объекта. Возвращаемое значение игнорируется;
- ItemCursorChange (или 17) - изменился курсор;
- ItemCursorHasChanged (или 18) - изменился курсор. Возвращаемое значение игнорируется;
- ItemToolTipChange (или 19) - изменилась всплывающая подсказка;
- ItemToolTipHasChanged (или 20) - изменилась всплывающая подсказка. Возвращаемое значение игнорируется;
- ItemFlagsChange (или 21) - изменились флаги;
- ItemFlagsHaveChanged (или 22) - изменились флаги. Возвращаемое значение игнорируется;
- ItemZValueChange (или 23) - изменилось положение по оси Z;
- ItemZValueHasChanged (или 24) - изменилось положение по оси Z. Возвращаемое значение игнорируется;
- ItemOpacityChange (или 25) - изменилась прозрачность объекта;
- ItemOpacityHasChanged (или 26) - изменилась прозрачность объекта. Возвращаемое значение игнорируется;
- ItemParentChange (или 5) - изменился родитель объекта;
- ItemParentHasChanged (или 15) - изменился родитель объекта. Возвращаемое значение игнорируется;
- ItemChildAddedChange (или 6) - в объект был добавлен потомок;
- ItemChildRemovedChange (или 7) - из объекта был удален потомок;
- ItemSceneChange (или 11) - объект был перемещен на другую сцену;
- ItemSceneHasChanged (или 16) - объект был перемещен на другую сцену. Возвращаемое значение игнорируется.
Замечание.
Вызов некоторых методов из метода itemChange() может привести к рекурсии. За подробной информацией обращайтесь к документации по классу QGraphicsItem.
Примечание.
PyQt5 также поддерживает помещение на сцену видеозаписей в качестве отдельных графических объектов и создание анимации. За подробным описанием обращайтесь к документации по
этой библиотеке.
Со следующего шага мы начнем рассматривать диалоговые окна.
Предыдущий шаг
Содержание
Следующий шаг