如何使用Python更改项目变量?


10

我想使用Python控制台更改用户定义的项目变量(可以在项目设置|变量中手动编辑)的值。我在QgsExpressionContextScope类中跟踪了setVariable()函数,但实际上并未成功更改项目设置中的变量。到目前为止,我的代码:

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

我想我在不同的表达上下文中迷路了...

Answers:


11

查看QgsExpressionContextUtils(https://qgis.org/api/classQgsExpressionContextUtils.html)。您需要的方法是QgsExpressionContextUtils.setProjectVariable,例如

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

删除变量呢?我在以下位置找不到方法QgsExpressionContextUtils
ismailsunni

没有高级API可以执行此操作。可能您可以使变量为NULL(将其设置为None),但是如果没有,则需要使用QgsExpressionContextUtils.setProjectVariables({})并重设全部。首先,您需要检查QgsExpressionContextUtils.projectScope()并为要保留的所有变量创建一个字典。这远非理想-但如果您想参与QGIS开发并通过github上的pull请求发送,也将是对API的微不足道的补充
ndawson

感谢@ndawson,通过setProjectVariables(preserved_variables)我检查了C ++代码,它可以与您一起工作以进行重置,希望我能为该功能做出贡献。
ismailsunni

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.