Saya mencoba mengatur atribut fitur berdasarkan nama atribut dengan kode ini
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
tapi hasilnya saya punya NULL di semua bidang. Jika saya gunakan
feature.setAttributes([1])
ini bekerja dengan baik.
Apa yang saya lakukan salah? Mengapa fitur [attrName] = 1 tidak berfungsi?
Pembaruan : Temukan solusi ini
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
pr.changeAttributeValues({feature.id() : {pr.fieldNameMap()[attrName] : 1}})
feature.setAttribute(attrName, 1)
danfeature.setAttribute(layer.fieldNameIndex(attrName), 1)
dengan hasil yang sama (referensi api memiliki dua metode setAttribute untuk fitur dengan indeks dan nama)feature[layer.fieldNameIndex(attrName)] = 1
juga sama.feature.initAttributes(len(attributes))
)?feature.initAttributes(1)
dengan hasil yang sama. Tapi periksafeature[attrName]
dan dapatkan 1 yang saya cari. Tetapi masih memiliki NULL jika saya membuka Tabel Atribut di gui.