11 votos

¿Cómo rellenar campos automáticamente al instante?

Estoy buscando crear una tabla de atributos donde el primer campo sea un menú desplegable (lo he logrado usando el widget de edición 'value map'), pero estoy teniendo dificultades para 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 complete automáticamente de acuerdo con el valor en el menú desplegable. Por ejemplo; si el valor del menú desplegable = A, entonces el valor del campo adyacente = 1. O si el valor del menú desplegable = B, entonces el valor del campo adyacente = 3, etc.

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

Estoy utilizando Windows 7 y la versión 1.8 de QGIS.

Muchas gracias.

9voto

Michael Puntos 11

Necesitarás un poco de python para hacer esto.

Puedes leer esta entrada de blog muy buena aquí

Crea un script similar al siguiente llamado FillForm.py y colócalo junto a tu 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' )

Ve a Propiedades de la capa vectorial => General e ingresa FormFill.formOpen en el cuadro de texto de la línea de Función de Inicialización.

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