Wie fülle ich Felder sofort automatisch aus?

11

Ich möchte eine Attributtabelle erstellen, in der das erste Feld ein Dropdown-Menü ist (dies wurde mithilfe des Bearbeitungs-Widgets "Wertzuordnung" erreicht), aber ich habe Probleme, eine Methode für den nächsten Teil zu finden.

Nachdem der Wert aus dem Dropdown-Menü ausgewählt wurde, möchte ich, dass die benachbarte Zelle (im nächsten Feld) automatisch entsprechend dem Wert im Dropdown-Menü ausgefüllt wird. So zum Beispiel; wenn Dropdown-Wert = A, dann benachbartes Feld = 1. Oder wenn Dropdown-Wert = B, dann benachbarter Feldwert = 3 usw.

Mir ist klar, dass es mit dem Feldrechner möglich ist, Felder als Teil eines separaten Prozesses automatisch auszufüllen, aber ich möchte, dass die Felder gleichzeitig mit der Auswahl des Dropdown-Werts ausgefüllt werden, wenn dies möglich ist.

Ich verwende Windows 7 und QGIS Version 1.8.

Danke vielmals.

ffinnm
quelle

Antworten:

9

Dazu benötigen Sie eine kleine Python.

Sie können diesen sehr schönen Blog-Beitrag hier lesen

Erstellen Sie ein Skript mit dem Namen FillForm.py und platzieren Sie es neben Ihrem Projekt

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

Gehen Sie zu Vector Layer Properties => General und geben Sie FormFill.formOpen in die Init-Funktionszeilenbearbeitung ein.

Matthias Kuhn
quelle
Ist es möglich, dies in QGIS 2.10 zu tun? Gibt es viele Unterschiede von 1,8?
Diogo Caribé
Ja, es ist immer noch möglich
Ian Turton