12 votos

PyQgis pregunta: ¿Cómo cambiar o ajustar la capa activa?

Desarrollo de un plugin de qgis, me encontré con que si la capa no está seleccionada en el panel Capas me puede iterar a través de todas las capas y hacer algo para ellos, pero "activar".

Podría alguien darme una pista por favor? Gracias!

21voto

alexis.kennedy Puntos 402

Puede establecer la capa activa mediante el qgis.utils.iface objeto (es decir, QgisInterface):

qgis.utils.iface.setActiveLayer(QgsMapLayer)  # returns bool
# or
qgis.utils.iface.legendInterface().setCurrentLayer(QgsMapLayer)  # returns bool

Borrar la selección o la capa activa (subrayado QTreeWidget elemento en QGIS 2.0), en la leyenda es un poco más complicado:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
lg = qgis.utils.iface.mainWindow().findChild(QTreeWidget, 'theMapLegend')
lg.selectionModel().clear()  # clear just selection
lg.setCurrentItem(None)  # clear selection and active layer

Hay tres maneras de recuperar la actual capas, en relación a lo que usted puede hacer:

~ a través de QList< QgsMapLayer * > QgsLegendInterface::capas()

qgis.utils.iface.legendInterface().layers()  # returns [layer, ...]

~ a través de QList< QgsMapLayer * > QgsMapCanvas::capas():

qgis.utils.iface.mapCanvas().layers()  # returns [layer, ...]

~ a través de const QMap< QString, QgsMapLayer * > & QgsMapLayerRegistry::mapLayers():

QgsMapLayerRegistry.instance().mapLayers()  # returns {'layer_id': layer, ...}

Hacer referencia a estas respuestas para obtener información acerca de las diferencias en los capa de colecciones.

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