วิธีที่ดีที่สุดในการสร้างเครื่องมือใหม่เช่นเครื่องมือ Select Single Feature คือการสืบทอดจาก QgsMapTool
คลาส เมื่อเครื่องมือของคุณเปิดใช้งานซึ่งสามารถตั้งค่าได้โดยใช้QgsMapCanvas::setMapTool
แป้นพิมพ์หรือเหตุการณ์การคลิกใด ๆ ที่ Canvas ได้รับจะถูกส่งไปยังเครื่องมือที่กำหนดเองของคุณ
นี่คือ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
แต่เมื่อฉันพยายามที่จะดำเนินการแก้ปัญหานี้ที่ฉันได้รับข้อผิดพลาดต่อไปนี้: ความคิดใด ๆ