이 코드를 사용하여 속성 이름으로 기능 속성을 설정하려고합니다.
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])
제대로 작동합니다.
내가 뭘 잘못 했니? feature [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 메서드가 있습니다)