Provo a impostare gli attributi delle funzioni in base al nome dell'attributo con questo codice
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
ma di conseguenza ho NULL in tutti i campi. Se io uso
feature.setAttributes([1])
funziona correttamente.
Cosa faccio di sbagliato? Perché feature [attrName] = 1 non funziona?
Aggiornamento : trova questa soluzione
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)
efeature.setAttribute(layer.fieldNameIndex(attrName), 1)
con gli stessi risultati (riferimento api hanno due metodi setAttribute per funzionalità con indice e nome)