Tool ======================= .. currentmodule:: axioma.gui .. class:: Tool Базовый класс инструментов. Когда пользователь включает инструмент, события от виджетов, которые им поддерживаются, начинают приходить в обработчики этого инструмента. Для каждого виджета создаётся один экземпляр класса, наследованного от :class:`~axioma.gui.Tool`. События сначала поступают в метод :meth:`~axioma.gui.Tool.handleEvent_impl`, который по умолчанию передаёт их в соответствующий обработчик для конкретного типа события: :meth:`~axioma.gui.Tool.mousePressEvent`, :meth:`~axioma.gui.Tool.keyPressEvent` и т. д. Все обработчики должны возвращать значение типа :class:`~axioma.gui.Tool.EventPolicy`, чтобы определить, нужно ли передавать событие дальше виджету или другим вложенным инструментам. Исключением являетя обработчик события отрисовки, который явяется независимым от метода :meth:`~axioma.gui.Tool.handleEvent_impl`, и в который дополнительно передаётся :class:`~PyQt5.QtGui.QPainter`. Унаследован от: * :class:`~PyQt5.QtCore.QObject` От него наследуются: * :class:`~axioma.gui.ChainTool` * :class:`~axioma.gui.DeviceToSceneHandler` * :class:`~axioma.gui.SnapHandler` Методы: .. method:: Tool(widget) Конструктор класса :param widget: Виджет, от которого инструмент будет получать события :type widget: :class:`~PyQt5.QtWidgets.QWidget` .. method:: handleEvent_impl(event) Метод для обработки всех поддерживаемых инструментом событий. По умолчанию передаёт событие в обработчики для конкретного типа. Инструмент может обрабатывать следующие типы событий: * QEvent::MouseButtonPress * QEvent::MouseButtonRelease * QEvent::MouseButtonDblClick * QEvent::MouseMove * QEvent::KeyPress * QEvent::KeyRelease * QEvent::Wheel * QEvent::Enter * QEvent::Leave :param event: событие :type event: :class:`~PyQt5.QtCore.QEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: paintEvent(event, painter) Событие отрисовки :param event: событие отрисовки :type event: :class:`~PyQt5.QtGui.QPaintEvent` :param painter: QPainter для рисования поверх виджета :type painter: :class:`~PyQt5.QtGui.QPainter` .. method:: mousePressEvent(event) Событие нажатия клавиши мыши :param event: событие мыши :type event: :class:`~PyQt5.QtGui.QMouseEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: mouseReleaseEvent(event) Событие отпускания клавиши мыши :param event: событие мыши :type event: :class:`~PyQt5.QtGui.QMouseEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: mouseMoveEvent(event) Событие перемещения мыши :param event: событие мыши :type event: :class:`~PyQt5.QtGui.QMouseEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: mouseDoubleClickEvent(event) Событие двойного клика мыши :param event: событие мыши :type event: :class:`~PyQt5.QtGui.QMouseEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: keyPressEvent(event) Событие нажатия клавиши клавиатуры :param event: событие клавиш :type event: :class:`~PyQt5.QtGui.QKeyEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: keyReleaseEvent(event) Событие отпускания клавиши клавиатуры :param event: событие клавиш :type event: :class:`~PyQt5.QtGui.QKeyEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: wheelEvent(event) Событие колеса мыши :param event: событие колеса мыши :type event: :class:`~PyQt5.QtGui.QWheelEvent` :rtype: :class:`~axioma.gui.Tool.EventPolicy` .. method:: widget() Виджет, от которого поступают события. :rtype: :class:`~PyQt5.QtWidgets.QWidget` .. .. class:: EventPolicy Режим передачи событий. .. csv-table:: Значения :header: Наименование, Описание PassEvent, Пропустить событие дальше по цепочке обработчиков BlockEvent, Блокировать обработку события