Mam konfigurację sygnału dla zdarzenia usuwania funkcji na warstwie:
self.layer.featureDeleted.connect(self.feature_deleted)
Kiedy próbuję pobrać atrybut z usuniętej funkcji w gnieździe, generowany jest błąd StopIteration (tzn. Nie można pobrać funkcji).
Pomyślałbym, że nadal powinienem być w stanie odzyskać atrybuty z usuniętej operacji przed zatwierdzeniem zmian w warstwie? W przeciwnym razie nie widzę zastosowania parametru 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]
Jak mogę uzyskać dostęp do atrybutów usuniętej operacji (zanim zmiany w warstwie zostaną zatwierdzone)?
Odpowiedzi:
Byłyby dwa momenty, w których nadal można uzyskać funkcje do usunięcia:
Gdy usuniesz je w sesji edycji, ale nie zatwierdziłeś ani nie zapisałeś zmian (tzn. Nadal możesz przywrócić).
Tuż przed zatwierdzeniem usuniętych funkcji (tj. Właśnie kliknąłeś
Save Layer Edits
przycisk lub właśnie zadzwoniłeślayer.commitChanges()
).źródło