12 votos

¿Abrir una tabla de atributos con PyQgis?

¿Es posible abrir una tabla de atributos desde la consola de Python o a través de un script de Python en QGIS?

13voto

alexis.kennedy Puntos 402

Sí se puede, al menos con la última versión maestra y la 1.8. Es un método expuesto a través de iface

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

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

Necesitará una referencia preexistente a un QgsVectorLayer.

Para la edición directa de características también es un método expuesto a través de iface :

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

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

Necesitará una referencia preexistente a un QgsVectorLayer y a un QgsFeature en ambos casos. La forma de la característica abierta y si es editable dependen de la configuración de la aplicación y de si la capa de la característica está en modo de edición.

0 votos

El ejemplo de Python me ha funcionado bien en la consola de Python. Sin embargo, intenté ejecutar este script en Processing, donde la capa = processing.getObject() de una capa cargada. De iface.showAttributeTable(layer), obtuve Name Error: global name 'iface' is not defined. ¿Alguna sugerencia?

0 votos

@dakcarto Tienes que importar iface con 'from qgis.utils import iface'

0 votos

@user25976 La referencia a iface sólo funciona para la consola o los scripts que se ejecutan desde QGIS, incluidos los plugins como Processing. Para la consola, es auto-importado por conveniencia, con todos los otros casos que necesitan el import de qgis.utils . Esto se describe en el comienzo del libro de cocina de PyQGIS . No se puede acceder a iface en una aplicación independiente, ya que los módulos de Python no instancian la aplicación GUI de escritorio de QGIS.

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