Come nascondere / mostrare QGisVectorLayer dal codice Python?


11

Una volta creato un livello, come posso nasconderlo / mostrarlo? Posso abilitare / disabilitare il rendering di un livello specifico selezionando la casella di controllo tramite QGIS, ma devo farlo a livello di codice dal codice Python.

Come posso mostrare / nascondere (non rimuovere) un'etichetta dal codice Python?

Sto cercando qualcosa come:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()

Sono contento che tu abbia cambiato il nome della variabile vl(dall'esempio di codice simile in una domanda precedente) a aLayer. È facile confondere la lettera minuscola lcon la cifra 1.
andytilia,

@andytilia: hai ragione. Ho anche modificato le vecchie domande.
Heisenbug,

Risposte:


8

È possibile controllare la visibilità del livello tramite l'oggetto legenda. Eccolo, usando il tuo codice di esempio sopra:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
legend = self.legendInterface()  # access the legend
legend.setLayerVisible(aLayer, False)  # hide the layer
# do something else
legend.setLayerVisible(aLayer, True)  # show the layer

# maybe later I want to check if the layer is visible
print legend.isLayerVisible(aLayer)

Ecco la documentazione per legendInterface: http://qgis.org/api/classQgsLegendInterface.html

In bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.