[Qgis-developer] qgis crash using QThread in a plugin script

Akbar Gumbira akbargumbira at gmail.com
Thu Sep 8 20:04:36 PDT 2016


Hi Sergio,

DId you fix already your problems? I am not sure if my answer is 100%
correct (so I don't post it in stackexchange) as  I didnt try it, but by
judging your code:

If I click apply without entering anything in the QLineEdit the
> QgsMessageBar appears correctly but if I close the QDialog and I do the
> same the QgisMessageBar has two items (1 more, see picture)


Plugins initiallization happened when starting QGIS. So the plugin is
already instantiated (along with your dialog, message bar, etc). Restarting
(that is closing and opening again) the dialog in your code doesn't destroy
all the instances. That is why the message bar has the previous messages.
You can just clear the message bar once user opens the dialog.

If I insert a word in the QLineEdit after opening the plugin for the second
> time, clicking on apply Qgis crashes.


This is not necessarily related to the crash :p:

   -

   word = unicode(self.dlg.inputedit.text())


But QString is stored in unicode, no need to recast it

For the cause of the crash, I strongly believe this is the problem:

    def add_item(self, item):
        self.list.addItem(item)
        return

Can you try to remove return there? I think it's forcing the thread to go
back to the main loop (plugin Run method)

Cheers



On Wed, Sep 7, 2016 at 1:57 PM, Sergio Vignali <vignalisergio30 at gmail.com>
wrote:

> I posted my problem in gis.stackexchange, (http://gis.stackexchange.com/
> questions/209602/qgis-crash-using-qthread-in-a-plugin-script).
> There you can find the full explanation of the problem and all the code I
> used... It would be great to get some feedbacks!
> Best
> s.
>
> 2016-09-06 3:58 GMT+02:00 Akbar Gumbira <akbargumbira at gmail.com>:
>
>> It would be more helpful if you point to the code here. I had a problem
>> with QThread (was initially inheriting QThread) but managed to fix the
>> problem by creating workers and move the worker object to thread. This is a
>> good article about multithreading in qgis https://snorfalorpagus.net/blo
>> g/2013/12/07/multithreading-in-qgis-python-plugins/
>>
>> On Sep 5, 2016 23:01, "Sergio Vignali" <vignalisergio30 at gmail.com> wrote:
>>
>>> Dear all,
>>>
>>> I wrote a python script that aims to execute neighbourhood statistics in
>>> raster layer. My script uses QThread to update a QList and a QProgressBar
>>> and everithing works fine if I run the script from PyCharm, the progressbar
>>> and the list are updated. The problem appears when I move my script in a
>>> Qgis plugin, the UI appears correctly but clicking OK the software
>>> crashes...
>>> I am using qgis 2.14 in a linux machine, do you have any advice?
>>>
>>> All the best
>>>
>>>
>>>
>>> --
>>> Sergio Vignali
>>>
>>>
>>> _______________________________________________
>>> Qgis-developer mailing list
>>> Qgis-developer at lists.osgeo.org
>>> List info: http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>> Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>
>
>
> --
> Sergio Vignali
>
>


-- 

*-------------------*
*Akbar Gumbira *
*www.akbargumbira.com <http://www.akbargumbira.com>*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20160909/bbc7192d/attachment-0001.html>


More information about the Qgis-developer mailing list