我刚开始我的第一个QGIS插件。其中一部分是,将按钮连接到创建点向量层的函数。 我用插件生成器创建了基本插件,并从内存层开始:
以下是“run(self)”函数的自定义部分的外观:
self.dockwidget.createShape.clicked.connect(self.createShp)
def createShp(self):
self.pointLayer = QgsVectorLayer("Point", "test", "memory")
self.pointLayer.startEditing()
self.layerData = self.pointLayer.dataProvider()
self.layerData.addAttributes([ QgsField("ID", QVariant.String), QgsField("testfield", QVariant.String)])
self.pointLayer.commitChanges()
QgsMapLayerRegistry.instance().addMapLayer(self.pointLayer)
代码工作并在内存中创建一个向量层并将其添加到映射中。在
我遇到的问题是,每当我关闭插件并重新启动它时,会创建一个额外的向量层,并在单击按钮时添加到地图中。只有重新启动QGIS才会重置。在
当onClosePlugin(self)函数运行时,我试图从qgsmapplayerRegistry中删除该层。但这只会删除一个可见层。 我的猜测是,每次启动插件并单击按钮时,都会在self.pointLayer”变量,然后传输到qgsmapplayerRegistry。但为什么每次点击都不呢?为什么只在插件重启之后? 我没能解决这个问题,我希望能在这里得到一些建议。在
谨致问候
目前没有回答
相关问题 更多 >
编程相关推荐