[QGIS-Developer] QGIS python action with Expression problem

Alessandro Pasotti apasotti at gmail.com
Mon Nov 7 02:46:23 PST 2022


You need to set the feature if you want to access the feature fields.

QgsExpressionContext::setFeature( const QgsFeature &feature )

If you want the form feature values you need to use the current_value
or the current_feature functions.

Regards.

On Mon, Nov 7, 2022 at 11:27 AM Andreas Neumann via QGIS-Developer
<qgis-developer at lists.osgeo.org> wrote:
>
> Hi,
>
> I am trying to implement a Python action in "form" and "feature" action scope that uses a QGIS expression, but fail to get a valid expression calculation.
>
> Here is my code so far:
>
> from qgis.PyQt.QtWidgets import *
> from qgis.core import QgsMessageLog
>
> expContext = QgsExpressionContext()
> expContext.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(form.layer()))
> expContext.appendScope(QgsExpressionContextUtils.formScope(form.feature(),'SingleEditMode'))
>
> exp = QgsExpression('t_id')
>
> expResult = exp.evaluate(expContext)
> QgsMessageLog.logMessage('Expression Result=' + str(expResult))
>
>
> So even the most basic expression (getting a field value) will not work in my code. I always get "None" as a result.
>
> Any idea what is missing? Am I missing a certain scope or an import statement?
>
> Thank you very much for any hints what might be wrong here ...
>
> Andreas
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer



-- 
Alessandro Pasotti
QCooperative:  www.qcooperative.net
ItOpen:   www.itopen.it


More information about the QGIS-Developer mailing list