Jak zmienić zmienną projektu za pomocą Pythona?


10

Chciałbym zmienić wartość zmiennej projektu zdefiniowanej przez użytkownika (można ją ręcznie edytować w Ustawieniach projektu | Zmienne) za pomocą konsoli Python. Wyśledziłem funkcję setVariable () w klasie QgsExpressionContextScope, ale nie udało mi się zmienić zmiennej w ustawieniach projektu. Mój kod do tej pory:

iface.mapCanvas().mapSettings().expressionContext().scope(0).setVariable('myvar',1)

Chyba gubię się w różnych kontekstach ekspresji ...

Odpowiedzi:


11

Spójrz na QgsExpressionContextUtils ( https://qgis.org/api/classQgsExpressionContextUtils.html ). Potrzebną metodą jest QgsExpressionContextUtils.setProjectVariable, np

QgsExpressionContextUtils.setProjectVariable('myvar','hello world')

Co powiesz na usunięcie zmiennej? Nie znalazłem metody na to wQgsExpressionContextUtils
ismailsunni 24.07.17

Nie ma do tego celu interfejsu API wysokiego poziomu. Być może uda Ci się uniknąć NULLING zmiennej (ustawiając ją na None), ale jeśli nie, musisz użyć QgsExpressionContextUtils.setProjectVariables ({}) i zresetować całą partię. Najpierw musisz sprawdzić QgsExpressionContextUtils.projectScope () i utworzyć słownik wszystkich zmiennych, które chcesz zachować. Jest to dalekie od ideału - ale byłoby również trywialnym dodatkiem do API, jeśli chcesz zaangażować się w rozwój QGIS i wysłać żądanie ściągnięcia na github ...
ndawson

Dzięki @ndawson, pracuje z tobą przy resetowaniu setProjectVariables(preserved_variables)Sprawdziłem kod C ++, mam nadzieję, że mogę przyczynić się do funkcjonalności.
ismailsunni

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.