Я намагаюся встановити атрибути функції за назвою атрибуту цим кодом
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
але в результаті я маю NULL у всіх полях. Якщо я користуюся
feature.setAttributes([1])
вона працює належним чином.
Що я роблю неправильно? Чому функція [attrName] = 1 не працює?
Оновлення : знайдіть це рішення
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)
іfeature.setAttribute(layer.fieldNameIndex(attrName), 1)
з однаковими результатами (api-посилання мають два способи setAttribute для функції з індексом та назвою)