[PySide] most basic QThread problem

Sean Fisk sean at seanfisk.com
Mon Dec 16 20:33:19 CET 2013


Hi Frank,

The example that I provided Janwillem in his thread about QFileDialog shows
two ways to wait for a thread: one by connect the thread’s wait() slot to
QApplication’s aboutToQuit signal, the other by overriding closeEvent() on
the main widget. Comments in the code explain the two approaches.

Hope this helps,


--
Sean Fisk


On Mon, Dec 16, 2013 at 2:28 PM, Frank Rueter | OHUfx <frank at ohufx.com>wrote:

>  ah, that makes perfect sense, thank you!
>
>
> On 17/12/13 02:54, Dan McCombs wrote:
>
> Hey Frank,
>
>  I think the real reason you're getting that message isn't the
> subclassing piece, but that your program is exiting before the thread has
> finished. There's nothing in your application to keep it running after
> running the doIt method, so it exits, and destroys the thread. Normally you
> would have a QApplication instance and be calling the exec_ method on that
> after doIt to start your application's event loop and keep it running,
> until it was quit via some user interaction.
>
>  -Dan
>
>  [image: Dyn logo, Dyn.com] <http://dyn.com/>        <http://twitter.com/dyn>
>    [image: Dyn facebook account] <http://facebook.com/dyn>   [image: Dyn
> LinkedIn account] <http://linkedin.com/company/dyn>
>
> Dan McCombs  / Senior Software Engineer
>  603 296 1568      @danmccombs <http://twitter.com/danmccombs/>
>
>
> On Mon, Dec 16, 2013 at 2:01 AM, Frank Rueter | OHUfx <frank at ohufx.com>wrote:
>
>> Hi all,
>>
>>
>> I am playing with simple QThread object and am getting the ol' "QThread:
>> Destroyed while thread is still running" error.
>>
>> I have searched the web quite a bit now and keep running into examples
>> that do exactly what I am doing, except it seems to work for others.
>> Can somebody tell me where I'm going wrong with this bare bones examples
>> please?
>>
>> Cheers,
>> frank
>>
>> from PySide import QtCore
>> import time
>>
>> class MyThread(QtCore.QThread):
>>
>>      def __init__(self, parent=None):
>>          super(MyThread, self).__init__(parent)
>>
>>      def run(self):
>>          for i in xrange(10):
>>              print i
>>              time.sleep(1)
>>
>> class MainApp(QtCore.QObject):
>>
>>      def __init__(self, parent=None):
>>          super(MainApp, self).__init__(parent)
>>          self.thread = MyThread(self)
>>
>>      def doIt(self):
>>          self.thread.start()
>>
>> if __name__ == '__main__':
>>      a = MainApp()
>>      a.doIt()
>>
>> _______________________________________________
>> PySide mailing list
>> PySide at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/pyside
>>
>
>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20131216/6ce5e5a7/attachment.html>


More information about the PySide mailing list