Vous pouvez définir le calque actif à l'aide de l'objet qgis.utils.iface (c'est-à-dire QgisInterface ):
qgis.utils.iface.setActiveLayer(QgsMapLayer) # returns bool
# or
qgis.utils.iface.legendInterface().setCurrentLayer(QgsMapLayer) # returns bool
L'effacement de la sélection, ou de la couche active (élément QTreeWidget souligné dans QGIS 2.0), dans la légende est un peu plus compliqué:
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
Il existe trois façons de récupérer les couches actuelles, par rapport à ce que vous souhaitez faire:
~ via QList <QgsMapLayer *> QgsLegendInterface :: layers ()
qgis.utils.iface.legendInterface().layers() # returns [layer, ...]
~ via QList <QgsMapLayer *> QgsMapCanvas :: couches () :
qgis.utils.iface.mapCanvas().layers() # returns [layer, ...]
~ via const QMap <QString, QgsMapLayer *> & QgsMapLayerRegistry :: mapLayers () :
QgsMapLayerRegistry.instance().mapLayers() # returns {'layer_id': layer, ...}
Consultez ces réponses pour obtenir des informations sur les différences dans ces collections de couches.