Ouvrir la table attributaire à l'aide de PyQgis?

11

Est-il possible d'ouvrir une table attributaire depuis la console Python ou via un script Python dans QGIS?

redfrex
la source

Réponses:

13

Oui, vous le pouvez, au moins avec la dernière version principale et la 1.8. C'est une méthode exposée via iface

// C++ (signature)
void showAttributeTable (QgsVectorLayer *l)

# PyQGIS (example)
iface.showAttributeTable(iface.activeLayer())

Vous aurez besoin d'une référence préexistante à un QgsVectorLayer.

Pour l'édition directe de fonctionnalités, c'est également une méthode exposée via iface :

// C++ (signature)
bool openFeatureForm (QgsVectorLayer *l, QgsFeature &f, bool updateFeatureOnly=false)

# PyQGIS (example)
iface.openFeatureForm(iface.activeLayer(), feature, False)

Vous aurez besoin d'une référence préexistante à QgsVectorLayer et à QgsFeature dans les deux cas. Le formulaire d'entité ouvert et s'il est modifiable dépend des paramètres de l'application et si le calque de l'entité est en mode édition.

dakcarto
la source
L'exemple Python a bien fonctionné pour moi lorsque dans la console Python. Cependant, j'ai essayé d'exécuter ce script dans Traitement, où la couche = processing.getObject () d'une couche chargée. De iface.showAttributeTable (couche), j'ai eu une erreur de nom: le nom global 'iface' n'est pas défini. Aucune suggestion?
user25976
@dakcarto Vous devez importer iface avec 'from qgis.utils import iface'
Mr Purple
@ user25976 La référence à ifacene fonctionne que pour la console ou les scripts exécutés à partir de QGIS, y compris les plugins comme Processing. Pour la console, il est importé automatiquement pour plus de commodité, tous les autres cas nécessitant le importof qgis.utils. Ceci est décrit au début du livre de recettes PyQGIS . Vous ne pouvez pas y accéder ifacedans une application autonome, car les modules Python n'instancient pas l'application graphique de bureau QGIS.
dakcarto
1
@dakcarto iface.openFeatureForm (iface.activeLayer (), fonctionnalité, Faux) Ceci est utile lorsque nous voulons modifier la fonctionnalité sélectionnée mais si je veux ajouter une nouvelle fonctionnalité, comment puis-je le faire? sans fonctionnalité
user99