Jak automatycznie wypełnić pola natychmiast?

11

Chcę utworzyć tabelę atrybutów, w której pierwszym polem jest menu rozwijane (osiągnąłem to za pomocą widgetu edycji „mapy wartości”), ale staram się znaleźć metodę dla następnej części;

Po wybraniu wartości z menu rozwijanego chciałbym, aby sąsiednia komórka (w następnym polu) była automatycznie wypełniana zgodnie z wartością z menu rozwijanego. Na przykład; jeśli wartość rozwijana = A, to sąsiednie pole = 1. Lub jeśli wartość rozwijana = B, to wartość sąsiedniego pola = 3 itd.

Zdaję sobie sprawę, że za pomocą kalkulatora pól można automatycznie wypełniać pola w ramach oddzielnego procesu, ale chciałbym, aby pola były wypełniane w tym samym czasie, gdy wybrano wartość rozwijaną, jeśli to możliwe.

Korzystam z systemu Windows 7 i QGIS w wersji 1.8.

Wielkie dzięki.

ffinnm
źródło

Odpowiedzi:

9

Aby to zrobić, potrzebujesz małego pytona.

Możesz przeczytać ten bardzo ładny post na blogu tutaj

Utwórz skrypt podobny do następującego o nazwie FillForm.py i umieść go obok swojego projektu

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

Przejdź do Właściwości warstwy wektorowej => Ogólne i wprowadź FormFill.formOpen w edycji linii funkcyjnej Init .

Matthias Kuhn
źródło
Czy można to zrobić w qgis 2.10? Czy istnieje wiele różnic 1,8?
Diogo Caribé
tak, nadal jest to możliwe
Ian Turton