[Qgis-user] Access to iface in processing alg

Matthias Kuhn matthias at opengis.ch
Mon Jul 9 12:25:32 PDT 2018


Hi,

Processing algorithms run often in background threads. That's likely why
you are getting a crash, it's not safe to call UI functions from
background threads.

It's possible to

 - run the processing algorithm with a custom QgsProcessingFeedback
implementation

 - make sure that pushInfo etc. is first sent to the main thread as a
signal and executed there

 - return the QgsProcessingAlgorithm.FlagNoThreading from your
algorithms flags() method

 - or consider sticking to the way that processing has been designed for

Regards

Matthias


On 07/09/2018 02:14 PM, Jean-Baptiste Desbas wrote:
>
> Hi,
>
> I just want to display a messageBar instead of displaying it un the
> processing output console (feedback.pushInfo) It's ni big deal but i
> was just confused.
>
> Do toi have any tips of use case of the differents pushInfo,
> pushConsoleInfo, etc. ?
>
> Thanks
>
> Le lun. 9 juil. 2018 19:18, Matthias Kuhn <matthias at opengis.ch
> <mailto:matthias at opengis.ch>> a écrit :
>
>     Hi,
>
>     can you elaborate why you need access to iface? In most cases
>     there are different ways that help you keep the algorithm modular
>     and portable by specifying required components via parameters or
>     acquiring them from the processing context.
>
>     Best regards
>
>     Matthias
>
>
>     On 07/09/2018 09:58 AM, Jean-Baptiste Desbas wrote:
>>     Hello,
>>
>>     What is the proper way to access iface in a processing alg ?
>>
>>     I try "from qgis.utils import iface" but it crash when i make an
>>     iface.pushWarning.
>>
>>     Thanks,
>>
>>     Here is the stack trace :
>>
>>
>>
>>
>>     *Crash ID*: 59968a8cbec4e3d98bbe532ada707149cd7f9eee
>>
>>
>>     *Stack Trace*
>>     <pre>
>>     QgsCustomization::preNotify :
>>     QObject::event :
>>     QApplicationPrivate::notify_helper :
>>     QApplication::notify :
>>     QgsApplication::notify :
>>     QCoreApplication::notifyInternal2 :
>>     QCoreApplicationPrivate::sendPostedEvents :
>>     qt_plugin_query_metadata :
>>     QEventDispatcherWin32::processEvents :
>>     CallWindowProcW :
>>     DispatchMessageW :
>>     QEventDispatcherWin32::processEvents :
>>     qt_plugin_query_metadata :
>>     QEventLoop::exec :
>>     QDialog::exec :
>>     PyCFunction_FastCallDict :
>>     PyObject_GenericGetAttr :
>>     PyEval_EvalFrameDefault :
>>     PyFunction_FastCallDict :
>>     PyObject_CallFunctionObjArgs :
>>     PyObject_Call :
>>     PyInit_QtCore :
>>     PyInit_QtCore :
>>     PyInit_QtCore :
>>     PyInit_QtCore :
>>     PyInit_QtCore :
>>     QMetaObject::activate :
>>     QAbstractItemView::doubleClicked :
>>     QTreeView::mouseDoubleClickEvent :
>>     QWidget::event :
>>     QFrame::event :
>>     QAbstractItemView::viewportEvent :
>>     QCoreApplicationPrivate::sendThroughObjectEventFilters :
>>     QApplicationPrivate::notify_helper :
>>     QApplication::notify :
>>     QgsApplication::notify :
>>     QCoreApplication::notifyInternal2 :
>>     QApplicationPrivate::sendMouseEvent :
>>     QSizePolicy::QSizePolicy :
>>     QSizePolicy::QSizePolicy :
>>     QApplicationPrivate::notify_helper :
>>     QApplication::notify :
>>     QgsApplication::notify :
>>     QCoreApplication::notifyInternal2 :
>>     QGuiApplicationPrivate::processMouseEvent :
>>     QWindowSystemInterface::sendWindowSystemEvents :
>>     QEventDispatcherWin32::processEvents :
>>     CallWindowProcW :
>>     DispatchMessageW :
>>     QEventDispatcherWin32::processEvents :
>>     qt_plugin_query_metadata :
>>     QEventLoop::exec :
>>     QCoreApplication::exec :
>>     main :
>>     BaseThreadInitThunk :
>>     RtlUserThreadStart :
>>     </pre>
>>
>>
>>     *QGIS Info*
>>     QGIS Version: 3.2.0-Bonn
>>     QGIS code revision: commit:bc43194061
>>     Compiled against Qt: 5.9.2
>>     Running against Qt: 5.9.2
>>     Compiled against GDAL: 2.2.4
>>     Running against GDAL: 2.2.4
>>
>>
>>
>>     *System Info*
>>     CPU Type: x86_64
>>     Kernel Type: winnt
>>     Kernel Version: 10.0.17134
>>
>>
>>
>>     _______________________________________________
>>     Qgis-user mailing list
>>     Qgis-user at lists.osgeo.org <mailto:Qgis-user at lists.osgeo.org>
>>     List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
>>     Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
>
>     -- 
>     Matthias Kuhn
>     matthias at opengis.ch <mailto:matthias at opengis.ch>
>     +41 (0)76 435 67 63 <tel:+41764356763>
>     OPENGIS.ch Logo <http://www.opengis.ch>
>     _______________________________________________
>     Qgis-user mailing list
>     Qgis-user at lists.osgeo.org <mailto:Qgis-user at lists.osgeo.org>
>     List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
>     Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
>
>
>
> _______________________________________________
> Qgis-user mailing list
> Qgis-user at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

-- 
Matthias Kuhn
matthias at opengis.ch <mailto:matthias at opengis.ch>
+41 (0)76 435 67 63 <tel:+41764356763>
OPENGIS.ch Logo <http://www.opengis.ch>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20180709/c69a0d05/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 6671 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20180709/c69a0d05/attachment.png>


More information about the Qgis-user mailing list