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.

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.