Tôi cố gắng đặt thuộc tính tính năng theo tên thuộc tính với mã này
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
nhưng kết quả là tôi có NULL trong tất cả các lĩnh vực. Nếu tôi sử dụng
feature.setAttributes([1])
nó hoạt động đúng
Tôi đã làm gì sai? Tại sao tính năng [attrName] = 1 không hoạt động?
Cập nhật : Tìm giải pháp này
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)
vàfeature.setAttribute(layer.fieldNameIndex(attrName), 1)
với cùng kết quả (tham chiếu api có hai phương thức setAttribution cho tính năng với chỉ mục và tên)