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.

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 .


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.