Cách tốt nhất để tạo một công cụ mới như công cụ Chọn một tính năng là kế thừa từ QgsMapTool
lớp. Khi công cụ của bạn đang hoạt động, có thể được đặt bằng cách sử dụng QgsMapCanvas::setMapTool
, mọi bàn phím hoặc nhấp vào các sự kiện mà canvas nhận được sẽ được chuyển vào công cụ tùy chỉnh của bạn.
Đây là một QgsMapTool
lớp học cơ bản
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
Bạn có thể làm những gì bạn cần canvasReleaseEvent
, v.v.
Để thiết lập công cụ này hoạt động, bạn chỉ cần làm:
tool = PointTool(qgis.iface.mapCanvas())
qgis.iface.mapCanvas().setMapTool(tool)
class PointTool(QgsMapTool): NameError: name 'QgsMapTool' is not defined
. Có ý kiến gì không?