Wie verstecke / zeige ich QGisVectorLayer vor Python-Code?


11

Wie kann ich eine Ebene nach dem Erstellen ausblenden / anzeigen? Ich kann das Rendern einer bestimmten Ebene aktivieren / deaktivieren, indem ich das Kontrollkästchen über QGIS aktiviere. Dies muss jedoch programmgesteuert über Python-Code erfolgen.

Wie kann ich ein Label im Python-Code ein- / ausblenden (nicht entfernen)?

Ich suche so etwas wie:

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

Ich bin froh, dass Sie den Variablennamen vl(aus dem ähnlichen Codebeispiel in einer früheren Frage) in geändert haben aLayer. Es ist leicht, den Kleinbuchstaben lmit der Ziffer zu verwechseln 1.
— Andytilia

@andytilia: du hast recht. Ich habe auch die alten Fragen bearbeitet.
— Heisenbug

Antworten:


8

Sie können die Ebenensichtbarkeit über das Legendenobjekt steuern. Hier ist es mit Ihrem obigen Beispielcode:

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)

Hier ist die Dokumentation für legendInterface: http://qgis.org/api/classQgsLegendInterface.html

Viel Glück!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.