Processing math: 100%

12 votos

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

Una vez creada una capa, ¿cómo puedo ocultarla/mostrarla? Puedo activar/desactivar el renderizado de una capa específica seleccionando la casilla de verificación a través de QGIS, pero necesito hacerlo programáticamente desde el código python.

¿Cómo puedo mostrar/ocultar (no eliminar) una etiqueta desde el código python?

Estoy buscando algo como:

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

0 votos

Me alegro de que hayas 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 l con el dígito 1 .

0 votos

@andytilia: tienes razón. Yo también he editado las preguntas antiguas.

9voto

Imran Puntos 20117

Puede controlar la visibilidad de la capa a través del objeto leyenda. Aquí está, utilizando su código de ejemplo 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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X