В программе 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 запускалась только после щелчка мыши без прописывания в консоли дополнительных команд?