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.