¿Cómo llenar automáticamente los campos al instante?


11

Estoy buscando crear una tabla de atributos donde el primer campo sea un menú desplegable (lo he logrado usando el widget de edición 'mapa de valores'), pero estoy luchando por encontrar un método para la siguiente parte;

Después de que se haya seleccionado el valor del menú desplegable, me gustaría que la celda adyacente (en el siguiente campo) se rellene automáticamente de acuerdo con el valor en el menú desplegable. Así por ejemplo; si el valor desplegable = A, entonces el campo adyacente = 1. O si el valor desplegable = B, entonces el valor del campo adyacente = 3, etc.

Me doy cuenta de que mediante el uso de la calculadora de campo, es posible rellenar automáticamente los campos como parte de un proceso separado, pero me gustaría que se rellenen los campos al mismo tiempo que se selecciona el valor desplegable si es posible.

Estoy usando Windows 7 y QGIS versión 1.8.

Muchas gracias.

Respuestas:


9

Necesitarás una pequeña pitón para hacer esto.

Puedes leer esta muy buena publicación de blog aquí

Cree un script similar al siguiente llamado FillForm.py y colóquelo junto a su proyecto

from PyQt4.QtCore import *
from PyQt4.QtGui import *

aField = None
bField = None

def formOpen(dialog,layerid,featureid):
    global aField
    aField = dialog.findChild(QComboBox,"fieldA")
    global bField
    bField = dialog.findChild(QLineEdit,"fieldB")
    aField.currentIndexChanged.connect( aChanged )

def aChanged( value ):
    if ( aField.currentText() == 'A' )
        bField.setText( '1' )
    elif ( aField.currentText() == 'B' )
        bField.setText( '2' )

Vaya a Propiedades de capa vectorial => General e ingrese FormFill.formOpen en la edición de línea de función Init .


¿Es posible hacerlo en qgis 2.10? ¿Hay muchas diferencias de 1.8?
Diogo Caribé

sí, todavía es posible
Ian Turton
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.