4 votos

Establecer expresión en QGIS editar referencia de widget de relación con PyQGIS

He instalación de una edición widget para un campo como una relación de referencia como se muestra a continuación y guardar la configuración como un QGIS estilo de capa archivo (*.qml):

enter image description here

Con PyQGIS tengo que hacer los siguientes pasos

  • la carga de la capa de vector necesario para las relaciones
  • crear las relaciones
  • carga de los archivos de estilo

Pero después de esto, la expresión desplegable está vacía porque no se almacena en el archivo qml:

<edittype widgetv2type="RelationReference" name="nv_bezeichnung">
   <widgetv2config OrderByValue="0" fieldEditable="1" ShowForm="0" Relation="rv-nv" ReadOnly="0" MapIdentification="1" labelOnTop="1" AllowNULL="0"/>
</edittype>

La edición de los widgets puede ser configurado con PyQGIS como

layer.setEditorWidgetV2Config(fieldId, {'key':'value'})

con las teclas de acuerdo con el fragmento xml anterior, pero no parece haber ninguna tecla para guardar la expresión, por lo tanto mi pregunta:

Cómo almacenar o guardar la Visualización de la Expresión' en una relación de referencia o conjunto con PyQGIS?

4voto

DBM Puntos 51

Este problema tiene una sencilla solución, que no es tan evidente a primera vista. Lo he encontrado por el estudio de la documentación a QgsVectorLayer en detalle. Este tiene un método setDisplayExpression(). La solución es que la pantalla de expresión no es una propiedad de el niño de la capa para la que la relación de referencia, pero para que la capa principal ( 1 en la 1:n relación).

Así, en PyQGIS la expresión de Visualización para el niño capa Rohrverbund es establecer la medida de su padre capa Netzverteiler a través de

QgsMapLayerRegistry.instance().mapLayersByName('Netzverteiler').setDisplayExpression('bezeichnung')

donde el atributo bezeichnung aparece en el cuadro combinado donde los padres de la capa está seleccionada.

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: