La mejor manera de crear una nueva herramienta, como la herramienta Seleccionar una sola característica, es heredar de la herramienta QgsMapTool
clase. Cuando su herramienta está activa, lo que puede establecerse mediante QgsMapCanvas::setMapTool
cualquier evento de teclado o de clic que reciba el lienzo será pasado a tu herramienta personalizada.
A continuación, se presenta un esquema básico QgsMapTool
clase
class PointTool(QgsMapTool):
def __init__(self, canvas):
QgsMapTool.__init__(self, canvas)
self.canvas = canvas
def canvasPressEvent(self, event):
pass
def canvasMoveEvent(self, event):
x = event.pos().x()
y = event.pos().y()
point = self.canvas.getCoordinateTransform().toMapCoordinates(x, y)
def canvasReleaseEvent(self, event):
#Get the click
x = event.pos().x()
y = event.pos().y()
point = self.canvas.getCoordinateTransform().toMapCoordinates(x, y)
def activate(self):
pass
def deactivate(self):
pass
def isZoomTool(self):
return False
def isTransient(self):
return False
def isEditTool(self):
return True
Puedes hacer lo que necesites en canvasReleaseEvent
etc.
Para activar esta herramienta basta con hacer:
tool = PointTool(qgis.iface.mapCanvas())
qgis.iface.mapCanvas().setMapTool(tool)