एक नया उपकरण बनाने के लिए सबसे अच्छा तरीका है जैसे चयन एकल सुविधा उपकरण QgsMapTool
वर्ग से विरासत में मिला है । जब आपका टूल सक्रिय होता है, जिसका उपयोग करके सेट किया जा सकता है QgsMapCanvas::setMapTool
, तो कोई भी कीबोर्ड या क्लिक की जाने वाली घटनाएँ आपके कस्टम टूल पर दी जाएगी।
यहाँ एक बुनियादी QgsMapTool
वर्ग है
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
आप वह कर सकते हैं जिसकी आपको आवश्यकता है canvasReleaseEvent
, आदि
इस उपकरण को सक्रिय करने के लिए आप बस करें:
tool = PointTool(qgis.iface.mapCanvas())
qgis.iface.mapCanvas().setMapTool(tool)
class PointTool(QgsMapTool): NameError: name 'QgsMapTool' is not defined
:। कोई विचार?