Come popolare automaticamente i campi all'istante?


11

Sto cercando di creare una tabella degli attributi in cui il primo campo è un menu a discesa (l'ho raggiunto utilizzando il widget di modifica della 'mappa del valore'), ma sto facendo fatica a trovare un metodo per la parte successiva;

Dopo aver selezionato il valore dal menu a discesa, vorrei che la cella adiacente (nel campo successivo) venisse popolata automaticamente in base al valore nel menu a discesa. Quindi per esempio; se valore del menu a discesa = A, quindi campo adiacente = 1. Oppure se valore del menu a discesa = B, quindi valore del campo adiacente = 3, ecc.

Mi rendo conto che utilizzando il calcolatore di campo, è possibile popolare automaticamente i campi come parte di un processo separato, ma vorrei che i campi fossero popolati contemporaneamente alla selezione del valore a discesa, se possibile.

Sto usando Windows 7 e QGIS versione 1.8.

Grazie molto.

Risposte:


9

Avrai bisogno di un po 'di pitone per farlo.

Puoi leggere questo bellissimo post sul blog qui

Crea uno script simile al seguente chiamato FillForm.py e posizionalo accanto al tuo progetto

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' )

Vai a Proprietà livello vettoriale => Generale e inserisci FormFill.formOpen nella modifica della riga della funzione Init .


È possibile farlo in qgis 2.10? Ci sono molte differenze di 1,8?
Diogo Caribé,

sì, è ancora possibile
Ian Turton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.