He hecho un pequeño plugin de QGIS, y me dieron algunos resultados extraños.
El programa ahora refleja el "Panel " Capas". Al añadir o eliminar capas en el Panel de la QListWidget
módulo de obtener los nombres de las capas.
He conectado la función a la legendLayersAdded
y layersRemoved
de la SEÑAL.
EL PROBLEMA: El agregar la parte está bien, y si puedo eliminar UNA capa, que también está bien. Pero si puedo quitar varias capas, el widget se pone de nuevo el resto de las capas de los nombres de los múltiples veces (número de quitarse capas).
La comunidad edit: Para sin embargo, muchas de múltiples capas son removidos, el resto de las capas aparecen en la lista que muchas veces. Ergo, si 3 capas se quitan, y hay 1 restantes, la capa que aparece 3 veces en la capa adicional panel:
Es como la señal de llama a la función de forma recursiva!? He intentado con el layerWasRemoved de la Señal y el resultado fue el mismo Hice un video de él, porque es difícil de explicar.
[https://www.youtube.com/watch?v=NuLtANtlLtE&feature=youtu.be]
Aquí está el código:
def ablak(self):
layers = []
self.dockwidget.telepules_kezelo.clear()
layers = self.iface.legendInterface().layers()
print "Befor" # Befor layer list
print layers # Layer list "from Layers Panel"
print "After" # After layer list
i = 0 # Just a counter for debubing
lista = self.dockwidget.telepules_kezelo
for layer in layers:
print layer.name()
lista.addItem(layer.name())
i = i+1
print i # Counter for debuging
layers = []
QgsMapLayerRegistry.instance().legendLayersAdded.connect(self.ablak)
QgsMapLayerRegistry.instance().layersRemoved.connect(self.ablak)
Yo fade out el problema con la transferencia de la self.dockwidget.telepules_kezelo.clear()
línea después de la Print After
línea. Y funciona bien, pero estoy muy frustrado con ella.