Pythonを使用してプロジェクト変数を変更するにはどうすればよいですか?


10

Pythonコンソールを使用して、ユーザー定義のプロジェクト変数の値を変更したい(プロジェクトの設定|変数で手動で編集できます)。QgsExpressionContextScopeクラスsetVariable()関数を追跡しましたが、プロジェクト設定の変数を実際に変更することに成功していません。これまでの私のコード:

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 2017

これを行う高レベルのAPIはありません。おそらく、変数のNULLING(Noneに設定)で済む可能性がありますが、そうでない場合は、QgsExpressionContextUtils.setProjectVariables({})を使用してロット全体をリセットする必要があります。最初にQgsExpressionContextUtils.projectScope()を確認して、保持するすべての変数のディクテーションを作成する必要があります。それははるかに理想からだ-しかし、あなたはgithubの上のプルリクエストを通じてQGIS開発や送信に参加したい場合も、APIに些細な追加になります...
ndawson

@ndawsonに感謝します。setProjectVariables(preserved_variables)これは、C ++コードをチェックしたことでリセットするための回避策で機能します。機能に貢献できるといいのですが。
ismailsunni 2017

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.