Is it possible to open an attribute table from the Python Console or through a Python script in QGIS?

1 Answer 1


Yes you can, at least with the latest master version and 1.8. It is a method exposed via iface

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

# PyQGIS (example)

You will need a preexisting reference to a QgsVectorLayer.

For direct editing of features it is also a method exposed via iface:

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

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

You will need a preexisting reference to a QgsVectorLayer and a QgsFeature in both cases. The feature form opened and whether it is editable are dependent upon app settings and whether the feature's layer is in edit mode.

  • The Python example worked well for me when in Python console. However, I tried to run this script in Processing, where the layer = processing.getObject() of a loaded layer. From iface.showAttributeTable(layer), I got Name Error: global name 'iface' is not defined. Any suggestions?
    – user25976
    Commented Apr 1, 2014 at 23:31
  • @dakcarto You need to import iface with 'from qgis.utils import iface'
    – Mr Purple
    Commented Nov 25, 2014 at 1:33
  • @user25976 The reference to iface only works for the console or scripts run from within QGIS, including plugins like Processing. For the console, it is auto-imported for convenience, with all other cases needing the import of qgis.utils. This is described at the beginning of the PyQGIS cookbook. You can not access iface in a standalone app, since the Python modules do not instantiate the QGIS desktop GUI application.
    – dakcarto
    Commented Nov 25, 2014 at 18:27
  • 1
    @dakcarto iface.openFeatureForm(iface.activeLayer(), feature, False) This is useful when we want to edit the selected feature but if i want to add a new feature how can i do that? without feature
    – user99
    Commented Feb 18, 2015 at 13:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.