J'ai une configuration de signal pour un événement de suppression d'entité sur une couche:
self.layer.featureDeleted.connect(self.feature_deleted)
Lorsque j'essaie de récupérer un attribut de la fonctionnalité supprimée sur l'emplacement, une erreur StopIteration est levée (c'est-à-dire qu'il ne peut pas récupérer la fonctionnalité).
J'aurais pensé que je devrais encore pouvoir récupérer les attributs d'une entité supprimée avant que les modifications apportées à la couche ne soient validées? Sinon, je ne vois pas à quoi sert le paramètre fid.
def feature_deleted(self, fid):
feature = self.layer.getFeatures(QgsFeatureRequest().setFilterFid(int(fid))).next()
idx = self.layer.fieldNameIndex('my_attribute')
print feature.attributes()[idx]
Comment accéder aux attributs d'une entité supprimée (avant que les modifications apportées à la couche ne soient validées)?
Réponses:
Il y aurait deux moments où vous pouvez toujours obtenir des fonctionnalités à supprimer:
Lorsque vous les supprimez dans une session d'édition mais que vous n'avez pas validé ou enregistré de modifications (c.-à-d. Vous pouvez toujours annuler).
Juste avant que les fonctionnalités supprimées ne soient validées (c'est-à-dire que vous venez de cliquer sur le
Save Layer Edits
bouton ou que vous venez d'appelerlayer.commitChanges()
).la source