我目前正在为QGIS编写处理脚本。在函数def initAlgorithm()中,我定义了几个参数。其中一个参数是使用带有预定义列表的QgsProcessingParameterEnum:

#初始化算法/工具的函数def-initAlgorithm(self,config=None):self.add参数(Qgs处理参数枚举(“CHOICE_LAYER”,'标题',选项=['A','B'],默认值='A'))

到目前为止,这是可行的,我可以在GUI中选择值。问题在于选择的进一步处理。在函数processAlgorithm()中,我尝试使用以下行从GUI获取值。

def processAlgorithm(自我、参数、上下文、反馈):#从GUI中获取价值choice=self.parameterAsString(参数,“choice_LAYER”,上下文)打印(f“{choice}”)

这也是可行的,但会从选项列表中返回值的索引位置。因此,选择“A”返回0,选择“B”返回1。

有没有一种方法可以获得“真实”值而不仅仅是索引?

我还尝试了self.parameterAsEnumString(),但这只在每次返回值“A”时返回。。。

1答案1

重置为默认值
7

设置usesStaticStrings=真创建参数时:

类示例处理算法(QgsProcessingAlgorithm):#等等。。。def-initAlgorithm(self,config=None):self.add参数(Qgs处理参数枚举(“CHOICE_LAYER”,'标题',选项=['A','B'],默认值='A',usesStaticStrings=True#此处))def processAlgorithm(自我、参数、上下文、反馈):#从GUI中获取价值choice=self.parameterAsString(参数,“choice_LAYER”,上下文)打印(f“{choice}”)#等。。。。。

在此处输入图像描述

或者,您可以创建一个选项列表并将其分配给实例属性,然后使用索引获取字符串值,例如。

类示例处理算法(QgsProcessingAlgorithm):#等等。。。def-initAlgorithm(self,config=None):自我_CHOICE_LAYER=[“A”,“B”]#实例属性self.add参数(Qgs处理参数枚举(“CHOICE_LAYER”,'标题',选项=自身_CHOICE_LAYER,defaultValue=self_选择层[0]))def processAlgorithm(自我、参数、上下文、反馈):#从GUI中获取价值choice=self.parameterAsInt(parameters,“choice_LAYER”,context)#<=====参数为int打印(f“{choice}{self.choice_LAYER[choice]}”)#等。。。。。

在此处输入图像描述

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.