domingo, 3 de diciembre de 2017

Usando getFeatureForm de QgisInterface (iface) en PyQGIS

En QGIS existen varias formas prediseñadas que pueden ser invocadas con código PyQGIS. Una de ellas es la que se utiliza para obtener rasgos (features) y se se llama mediante el método 'getFeatureForm' de QgisInterface (iface). Corresponde a un objeto del tipo QgsAttributeDialog al cual se le pasan como parámetros la capa vectorial y el rasgo que se desee explorar.

El código siguiente permite visualizar dicha forma, en modo de edición, para el primer rasgo de la capa activa. Incluye instrucciones adicionales para posicionarla aproximadamente en el medio de la pantalla con unas dimensiones fijas de de 400 x 34*[(números de campos)+60].

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from qgis.PyQt.QtCore import QSize

layer = iface.activeLayer()
layer.startEditing()

fields_number = layer.fields().size()

feats = [ feat for feat in layer.getFeatures() ]

form = iface.getFeatureForm(layer, feats[0])

form.setFixedSize(QSize(400, 34*fields_number + 60))

form.move(700, 300)

form.show()

A continuación se presenta el resultado de ejecución del script anterior para el vectorial con 8 rasgos y 12 campos:


y en la siguiente para el vectorial con un sólo rasgo y un campo.


Ambas formas pueden ser editadas y los cambios surtir efecto después de apelar al método 'commitChanges' de QgsVectorLayer.

No hay comentarios: