Ini lebih sederhana daripada dengan versi 1.8:
layer = qgis.utils.iface.activeLayer()
fields = layer.pendingFields()
field_names = [field.name() for field in fields]
atau dalam satu baris
field_names = [field.name() for field in layer.pendingFields() ]
setelah
for elem in layer.getFeatures():
print dict(zip(field_names, elem.attributes()))
{u'adip': 17, u'dipdir': 130, u'tdip': 29}
{u'adip': 55, u'dipdir': 325, u'tdip': 75}
.....
Secara umum untuk mengeksplorasi fungsi baru, saya menggunakan dir () atau modul lihat untuk memeriksa apa yang ada di dalamnya:
dir(fields)
['FieldOrigin', 'OriginEdit', 'OriginJoin', 'OriginProvider', 'OriginUnknown', '__class__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__len__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'append', 'at', 'clear', 'count', 'extend', 'field', 'fieldOrigin', 'fieldOriginIndex', 'indexFromName', 'isEmpty', 'remove', 'size', 'toList']
atau
see(fields)
[] hash() help() len()
repr() str() .FieldOrigin() .OriginEdit
.OriginJoin .OriginProvider .OriginUnknown .append()
.at() .clear() .count() .extend()
.field() .fieldOrigin() .fieldOriginIndex()
.indexFromName() .isEmpty() .remove() .size()
.toList()
Dan Anda dapat melihat bahwa ada fungsi field () jadi
print fields.field(0)
qgis.core.QgsField object at 0x163E39C0
dan sebuah bidang memiliki nama, tipe, presisi, ...:
see(fields.field(0))
< <= == != >
>= hash() help() repr()
str() .comment() .displayString() .length()
.name() .precision() .setComment() .setLength()
.setName() .setPrecision() .setType() .setTypeName()
.type() .typeName()
begitu:
fields.field(0).name()
u'adip'
fields.field(0).type()
2
fields.field(0).typeName()
u'Integer'
fields.field(0).precision()
0
....
dengan .dataProvider ()
Ini adalah .field ()
....
prov = layer.dataProvider()
prov.fields().field(0).name()
u'adip'
prov.fields().field(0).typeName()
u'Integer'
dan
field_names = [field.name() for field in prov.fields()]
getLayerID()
tetapi ini tidak berfungsi lagi.Ini berfungsi misalnya seperti ini (sejak QGIS dev 1.9 terakhir):
sumber