ฉันพยายามตั้งค่าคุณสมบัติตามชื่อคุณลักษณะด้วยรหัสนี้
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
แต่ในผลลัพธ์ฉันมีค่าว่างในทุกสาขา ถ้าฉันใช้
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 สำหรับคุณลักษณะที่มีดัชนีและชื่อ)