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

2024-10-03 19:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始我的第一个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。但为什么每次点击都不呢?为什么只在插件重启之后? 我没能解决这个问题,我希望能在这里得到一些建议。在

谨致问候


Tags: 函数内存runself插件string按钮向量