@Archie_7

Можно ли запускать алгоритм после нажатия левой кнопки мыши (QGis, Python)?

В программе QGis появилась необходимость получать координаты по курсору мыши.
На просторах интернета нашел код, который выдавал в консоли эти координаты по щелчку левой кнопки мыши. В ООП я совсем слаб, поэтому под свою задачу добавил только метод get_coords
Также отдельно от этого класса была написана функция, которая работает корректно, вот пример кода (функцию заменил на print).

# coding: utf-8
from PyQt4.QtCore import Qt
from qgis.gui import QgsMapTool
from qgis.utils import iface


class SendPointToolCoordinates(QgsMapTool):

    def __init__(self, canvas, layer):
        """ Constructor.
        """
        QgsMapTool.__init__(self, canvas=iface.mapCanvas())
        self.canvas = canvas
        self.layer = QgsVectirLayer()
        self.setCursor(Qt.CrossCursor)

    def canvasReleaseEvent(self, event):
        self.point = self.toLayerCoordinates(self.layer, event.pos())

    def get_coords(self):
        return (self.point.x(), self.point.y())

def main_fun(coor): #в качестве аргумента принимает координаты
    print('выполняется алгоритм функции')


Сам алгоритм работает, но уж очень коряво.
сначала в консоли нужно добавить объекты класса
tool = SendPointToolCoordinates()
canvas = iface.mapCanvas()
canvas.setMapTool(tool)

после этого кликаем по нужному местоположению, вызываем
coor = tool.get_coords()
И только потом вызываем функцию main_fun

Можно ли сделать так, чтобы запустив алгоритм, функция main_fun запускалась только после щелчка мыши без прописывания в консоли дополнительных команд?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы