Lo siguiente por supuesto funciona, selecciona estas características de mi_capa que tienen atributo 1 para mi_campo2 y añade los atributos correspondientes de mi_campo1 en mi_lista:
my_layer = iface.activeLayer()
indexmf = my_layer.fieldNameIndex("my_field1")
my_list = []
it = my_layer.getFeatures( QgsFeatureRequest().setFilterExpression ( u'"my_field2" = 1') )
my_layer.setSelectedFeatures( [ f.id() for f in it ] )
selection = my_layer.selectedFeatures()
for feature in selection:
sfeat = feature.attributes()[indexmf]
my_list.append(sfeat)
#and of course remove selection
layer.removeSelection()
Entonces, me gustaría crear una función para hacer lo anterior:
[editado.. funciona]
def my_function(layer, list, fieldname, attribute, index):
it = layer.getFeatures( QgsFeatureRequest().setFilterExpression ( u'"%s" = {0}'.format(attribute) %fieldname ) )
layer.setSelectedFeatures( [ f.id() for f in it ] )
selection = layer.selectedFeatures()
for feature in selection:
sfeat = feature.attributes()[index]
list.append(sfeat)
layer.removeSelection()
Pero cuando lo llamo no pasa nada:
my_function(my_layer, my_list, "my_field2", 1, indexmf)
¿Podría ayudarme a entender lo que me falta?