MapTool - Инструмент окна карты

class axipy.MapTool

Инструмент окна карты. При создании своего инструмента новый инструмент наследуется от этого класса, и переопределяет необходимые обработчики событий.

См.также

axipy.ObserverManager.

Пример:

MyTool(MapTool):

    def mousePressEvent(self, event):
        print('mouse pressed')
        return self.PassEvent

Классовые методы:

reset()

Переключает текущий инструмент на инструмент по умолчанию.

Свойства:

cursor

Текущий курсор для данного инструмента.

view

Отображение данных в окне.

Атрибуты:

BlockEvent

Прекратить обработку события.

PassEvent

Передать событие дальше.

enable_on

Идентификатор наблюдателя для определения доступности инструмента.

Методы:

canDeactivate(reason)

Обрабатывает причину выключения инструмента.

canUnload(reason)

Обрабатывает причину выключения инструмента.

deactivate()

Выполняет действия непосредственно перед выключением инструмента и перед его удалением.

get_select_rect(device[, size])

Возвращает прямоугольник в координатах карты для точки на экране.

handleEvent(event)

Первичный обработчик всех событий инструмента.

is_snapped()

Проверяет, сработала ли привязка к элементам карты или отчета для текущего положения указателя мыши.

keyPressEvent(event)

Обрабатывает событие нажатия клавиши клавиатуры.

keyReleaseEvent(event)

Обрабатывает событие отпускания клавиши клавиатуры.

load()

Выполняет действия непосредственно перед включением инструмента.

mouseDoubleClickEvent(event)

Обрабатывает событие двойного клика мыши.

mouseMoveEvent(event)

Обрабатывает событие перемещения мыши.

mousePressEvent(event)

Обрабатывает событие нажатия клавиши мыши.

mouseReleaseEvent(event)

Обрабатывает событие отпускания клавиши мыши.

paintEvent(event, painter)

Обрабатывает событие отрисовки.

redraw()

Перерисовывает окно карты.

snap([default_value])

Возвращает исправленные координаты, если сработала привязка к элементам в единицах измерения карты или отчета.

snap_device([default_value])

Возвращает исправленные координаты, если сработала привязка к элементам в единицах измерения окна карты (виджета).

to_device(scene)

Переводит точки из координат на карте в координаты окна(пиксели).

to_scene(device)

Переводит точки из координат окна(пикселей) в координаты на карте.

unload()

Выполняет действия непосредственно перед выключением инструмента и перед его удалением.

wheelEvent(event)

Обрабатывает событие колеса мыши.

BlockEvent

Прекратить обработку события. Значение True.

PassEvent

Передать событие дальше. Значение False.

canDeactivate(reason: DeactivationReason) bool

Обрабатывает причину выключения инструмента.

Переопределите этот метод, чтобы задать свой обработчик.

Параметры:

reason – причина выключения.

Результат:

False чтобы прервать выключение, иначе True.

Предупреждение

Не рекомендуется, начиная с версии 3.6: Используйте canUnload().

canUnload(reason: DeactivationReason) bool

Обрабатывает причину выключения инструмента.

Переопределите этот метод, чтобы задать свой обработчик.

Параметры:

reason – причина выключения.

Результат:

False чтобы прервать выключение, иначе True.

property cursor: QCursor

Текущий курсор для данного инструмента.

Первоначально курсор для инструмента можно установить, переопределив метод load():

class MyTool(MapTool):
    def load(self):
        self.cursor = QCursor(Qt.SizeAllCursor)

Если же требуется устанавливать различный типы курсора в зависимости от статуса нажатия ПКМ, следует переопределить методы mousePressEvent() и mouseReleaseEvent() и установить нужное значение там:

class MyTool(MapTool):
    def mousePressEvent(self, event) -> bool:
        if event.button() == Qt.LeftButton:
            self.cursor = QCursor(Qt.SizeAllCursor)
deactivate()

Выполняет действия непосредственно перед выключением инструмента и перед его удалением.

Предупреждение

Не рекомендуется, начиная с версии 3.6: Используйте unload().

enable_on

Идентификатор наблюдателя для определения доступности инструмента. По умолчанию отсутствует.

get_select_rect(device: QPoint, size: int = 3) Rect

Возвращает прямоугольник в координатах карты для точки на экране. Удобно для использования при поиске объектов.

Параметры:
  • device – Точка в координатах окна.

  • size – Размер квадрата в пикселях.

Результат:

Прямоугольник в координатах карты.

Пример:

device_point = event.pos()
bbox = self.get_select_rect(device_point, 30)
features = table.items(bbox=bbox)
handleEvent(event: QEvent) Optional[bool]

Первичный обработчик всех событий инструмента.

Если событие не блокируется этим обработчиком, то оно будет передано дальше в соответствующий специализированный обработчик mousePressEvent(), keyReleaseEvent() и прочие в зависимости от типа.

Параметры:

event – Событие.

Результат:

BlockEvent, чтобы блокировать дальнейшую обработку события.

is_snapped() bool

Проверяет, сработала ли привязка к элементам карты или отчета для текущего положения указателя мыши.

См.также

snap(), snap_device().

keyPressEvent(event: QKeyEvent) Optional[bool]

Обрабатывает событие нажатия клавиши клавиатуры.

Параметры:

event – Событие нажатия клавиши клавиатуры.

Результат:

PassEvent, чтобы пропустить событие дальше по цепочке обработчиков. None или BlockEvent, чтобы блокировать дальнейшую обработку события.

keyReleaseEvent(event: QKeyEvent) Optional[bool]

Обрабатывает событие отпускания клавиши клавиатуры.

Параметры:

event – Событие отпускания клавиши клавиатуры.

Результат:

PassEvent, чтобы пропустить событие дальше по цепочке обработчиков. None или BlockEvent, чтобы блокировать дальнейшую обработку события.

load()

Выполняет действия непосредственно перед включением инструмента.

Переопределите этот метод, чтобы задать свои действия.

См.также

unload().

mouseDoubleClickEvent(event: QMouseEvent) Optional[bool]

Обрабатывает событие двойного клика мыши.

Параметры:

event – Событие двойного клика мыши.

Результат:

PassEvent, чтобы пропустить событие дальше по цепочке обработчиков. None или BlockEvent, чтобы блокировать дальнейшую обработку события.

mouseMoveEvent(event: QMouseEvent) Optional[bool]

Обрабатывает событие перемещения мыши.

Параметры:

event – Событие перемещения мыши.

Результат:

PassEvent или None, чтобы пропустить событие дальше по цепочке обработчиков. BlockEvent, чтобы блокировать дальнейшую обработку события.

mousePressEvent(event: QMouseEvent) Optional[bool]

Обрабатывает событие нажатия клавиши мыши.

Параметры:

event – Событие нажатия клавиши мыши.

Результат:

PassEvent, чтобы пропустить событие дальше по цепочке обработчиков. None или BlockEvent, чтобы блокировать дальнейшую обработку события.

mouseReleaseEvent(event: QMouseEvent) Optional[bool]

Обрабатывает событие отпускания клавиши мыши.

Параметры:

event – Событие отпускания клавиши мыши.

Результат:

PassEvent, чтобы пропустить событие дальше по цепочке обработчиков. None или BlockEvent, чтобы блокировать дальнейшую обработку события.

paintEvent(event: QPaintEvent, painter: QPainter)

Обрабатывает событие отрисовки.

Параметры:
  • event – Событие отрисовки.

  • painter – QPainter для рисования поверх виджета

redraw()

Перерисовывает окно карты.

Создает событие PySide2.QtGui.QPaintEvent и помещает его в очередь обработки событий. Аналогично PySide2.QtWidgets.QWidget.update().

static reset()

Переключает текущий инструмент на инструмент по умолчанию.

Обычно инструментом по умолчанию является Выбор.

snap(default_value: Optional[Pnt] = None) Optional[Pnt]

Возвращает исправленные координаты, если сработала привязка к элементам в единицах измерения карты или отчета.

Параметры:

default_value – Значение по умолчанию.

Возвращает значение по умолчанию, если не сработала привязка к элементам карты или отчета.

Пример:

point = self.to_scene(event.pos())
current_point = self.snap(point)
snap_device(default_value: Optional[QPoint] = None) Optional[QPoint]

Возвращает исправленные координаты, если сработала привязка к элементам в единицах измерения окна карты (виджета).

Параметры:

default_value – Значение по умолчанию.

Возвращает значение по умолчанию, если не сработала привязка к элементам карты или отчета.

Пример:

device_point = event.pos()
current_device_point = self.snap_device(device_point)

См.также

is_snapped(), snap().

to_device(scene: Union[Pnt, Rect]) Union[QPoint, QRect]

Переводит точки из координат на карте в координаты окна(пиксели).

Параметры:

scene – Точки в координатах карты.

Результат:

Точки в координатах окна.

to_scene(device: Union[QPoint, QRect]) Union[Pnt, Rect]

Переводит точки из координат окна(пикселей) в координаты на карте.

Параметры:

device – Точки в координатах окна.

Результат:

Точки в координатах карты.

unload()

Выполняет действия непосредственно перед выключением инструмента и перед его удалением.

Переопределите этот метод, чтобы задать свои действия.

См.также

load().

property view: MapView

Отображение данных в окне.

wheelEvent(event: QWheelEvent) Optional[bool]

Обрабатывает событие колеса мыши.

Параметры:

event – Событие колеса мыши.

Результат:

PassEvent, чтобы пропустить событие дальше по цепочке обработчиков. None или BlockEvent, чтобы блокировать дальнейшую обработку события.

class axipy.DeactivationReason

Причина выключения инструмента.

Атрибуты:

ActionClick

Нажатие на действие

ActionShortcut

Вызов действия комбинацией клавиш

LayerClick

Нажатие на свойства слоя

ObjectClose

Закрытие объекта данных

Unknown

Не определено

WindowClose

Закрытие окна