如何在qgis插件重启后停止层/变量复制?

时间:2017-08-06 21:52:15

标签: python qgis

我刚开始使用我的第一个QGIS插件。一部分是将按钮连接到创建点矢量图层的函数。 我使用Plugin-Builder创建了base-plugin,并以内存层开始:

这就是我的“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)-function运行时,我试图从QgsMapLayerRegistry中删除该层。但这只删除了一个可见层。 我的猜测是,每次启动插件并单击按钮时,会在“self.pointLayer”变量中添加一个额外的矢量图层,然后传输到QgsMapLayerRegistry。但为什么不是每次点击?为什么只有在插件重启后? 我无法解决这个问题,我希望在这里有一些建议。

祝你好运

0 个答案:

没有答案