Bagaimana cara mengisi bidang secara otomatis secara instan?

11

Saya mencari untuk membuat tabel atribut di mana bidang pertama adalah menu drop-down (saya telah mencapai ini dengan menggunakan widget edit 'nilai peta'), tapi saya berjuang untuk menemukan metode untuk bagian selanjutnya;

Setelah nilai telah dipilih dari menu drop-down, saya ingin sel yang berdekatan (di bidang berikutnya) secara otomatis diisi sesuai dengan nilai di menu drop-down. Jadi misalnya; jika nilai drop-down = A, maka bidang yang berdekatan = 1. Atau jika nilai drop-down = B, maka nilai bidang yang berdekatan = 3, dll.

Saya menyadari bahwa dengan menggunakan kalkulator bidang, dimungkinkan untuk mengisi bidang secara otomatis sebagai bagian dari proses yang terpisah, tetapi saya ingin agar bidang diisi pada saat yang sama dengan nilai drop-down dipilih jika memungkinkan.

Saya menggunakan windows 7 dan QGIS versi 1.8.

Terimakasih banyak.

darim
sumber

Jawaban:

9

Anda perlu python kecil untuk melakukan ini.

Anda dapat membaca posting blog yang sangat bagus ini di sini

Buat skrip yang mirip dengan FillForm.py berikut ini dan letakkan di sebelah proyek Anda

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

Pergi ke Vector Layer Properties => General dan masukkan FormFill.formOpen di edit baris fungsi Init .

Matthias Kuhn
sumber
Apakah mungkin melakukannya di qgis 2.10? Apakah ada banyak perbedaan 1,8?
Diogo Caribé
ya itu masih mungkin
Ian Turton