¿Cómo ocultar / mostrar QGisVectorLayer del código Python?


11

Una vez creada una capa, ¿cómo puedo ocultarla / mostrarla? Puedo habilitar / deshabilitar la representación de una capa específica seleccionando la casilla de verificación a través de QGIS, pero necesito hacerlo mediante programación desde el código de Python.

¿Cómo puedo mostrar / ocultar (no eliminar) una etiqueta del código de Python?

Estoy buscando algo como:

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

Me alegra que haya cambiado el nombre de la variable vl(del ejemplo de código similar en una pregunta anterior) a aLayer. Es fácil confundir la letra minúscula lcon el dígito 1.
andytilia

@andytilia: tienes razón. También edité las viejas preguntas.
Heisenbug

Respuestas:


8

Puede controlar la visibilidad de la capa a través del objeto de leyenda. Aquí está, usando su código de muestra anterior:

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)

Aquí está la documentación para legendInterface: http://qgis.org/api/classQgsLegendInterface.html

¡Buena suerte!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.