[PySide] QThread crash before emitting finished signal

Sebastian Elner sebastian at risefx.com
Thu Jun 7 10:50:16 CEST 2012


Although it is in the documentation, QThread is not meant to be used 
this way (subclassing). Have a look at this: 
http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/ It helped me a 
lot. Also a complete stripped down example would greatly help in a case 
of a segfault.


On 06/07/2012 09:59 AM, William Dias wrote:
> Hi,
>
> I have a subclass of QThread which uploads pictures to a webserver. 
> For each new picture created in the main thread, the program spawns a 
> new thread to handle the job. I've override the __init__ method to be 
> able to pass some parameters to the thread object, as you can see bellow.
>
>     class PhotoConnection(QThread):
>     photoStatus = Signal(str, str)
>
>     def __init__(self, tags, filename, parent=None):
>     QThread.__init__(self, parent)
>     self.tags = tags
>     self.filename = filename
>
>     def run(self):
>     status = sendPhoto(self.tags, self.filename)
>     self.photoStatus.emit(self.filename, status)
>
>
> In the GUI thread, the method responsible dor creating the threads is 
> the following:
>
>     def sendPhoto(self):
>     photoConnection = PhotoConnection(self.tags_to_string,
>     self.filename, self)
>     photoConnection.photoStatus.connect(self.photoStatus)
>     photoConnection.finished.connect(self.threadFinished)
>     photoConnection.start()
>
>
> In the PhotoConnection, if I don't set the parent of my Qthread object 
> to self (for example, if I set to None) or if I don't override the 
> __init__ method and create another method to pass the arguments, when 
> the thread finishes the execution I got a segfault.
> Why is this happening? Can you help me?
>
> Thanks,
>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside


-- 
Sebastian Elsner    -    pipeline td   -   r i s e |  fx

t:  +49 30 20180300                 sebastian at risefx.com
                                           www.risefx.com

r i s e |  fx  GmbH
Schlesische Strasse 28 Aufgang B, 10997 Berlin
Geschäftsführer: Sven Pannicke, Robert Pinnow

Handelsregister Berlin HRB 106667 B

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20120607/585d1428/attachment.html>


More information about the PySide mailing list