Як змінити змінну проекту за допомогою Python?


10

Я хотів би змінити значення визначеної користувачем змінної проекту (її можна вручну редагувати в Налаштуваннях проекту | Змінні) за допомогою консолі Python. Я відстежив функцію setVariable () у класі QgsExpressionContextScope, але не зміг насправді змінити змінну в налаштуваннях проекту. Мій код поки що:

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

Я здогадуюсь, що я заблукаю в різних виразних контекстах ...

Відповіді:


11

Подивіться на QgsExpressionContextUtils ( https://qgis.org/api/classQgsExpressionContextUtils.html ). Вам потрібен метод QgsExpressionContextUtils.setProjectVariable, наприклад

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

Що з видаленням змінної? Я не знайшов методу для цього вQgsExpressionContextUtils
ismailsunni

Для цього не існує API високого рівня. Можливо, ви могли б відійти від NULLING змінної (встановивши її в None), але якщо ні, вам потрібно використовувати QgsExpressionContextUtils.setProjectVariables ({}) і скинути всю партію. Спочатку вам слід перевірити QgsExpressionContextUtils.projectScope () та створити дикту з усіх змінних, які ви хочете зберегти. Це далеко не ідеально - але це також було б тривіальним доповненням до API, якщо ви хочете долучитися до розробки QGIS та надіслати запит на
виклик

Дякуємо @ndawson, він працює з вашою роботою навколо, щоб скинутись з того, що setProjectVariables(preserved_variables)я перевірив код C ++, сподіваюся, я можу зробити свій внесок у функціональність.
ismailsunni

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.