I am at home using the most recent version of pyqt and sip (20090906)
that I compiled on linux amd64.  I am using Qt 4.5.0 that comes with
ubuntu 9.04. The example that I sent does not work because the
"finished()" never gets emitted if I include the 'deleteLater' call.  

I do not have dbus if that makes a difference.

mbs

On Tue, 2009-09-08 at 08:15 +0100, Phil Thompson wrote:
> On Mon, 07 Sep 2009 20:44:13 -0400, Matt Smith <mel...@orangepalantir.org>
> wrote:
> > The long and short, when I use a QThread at the end of my run method, I
> > call self.deleteLater().  If I call self.deleteLater() the "finished()"
> > signal is never emitted.  It used to emit "finished()" even if I called
> > deletLate(), and I thought I needed the self.deleteLater() to clean up
> > connections and such.
> > 
> > If interested I could easily post an example.  If not Ill emit
> > "finished()" before the delete later.
> 
> I would need a test case, and to know which versions you are talking about.
> 
> Phil
#!/usr/bin/env python
from PyQt4 import QtGui,QtCore
import sys

class WhenDeleted(QtCore.QThread):
    def __init__(self,app,parent=None):
        QtCore.QThread.__init__(self,parent)
        self.connect(self,QtCore.SIGNAL("finished()"),self.echo)
        self.connect(self,QtCore.SIGNAL("started()"),self.stop)
    def run(self):
        self.exec_()
        print "finished here"
        self.deleteLater()      #comment out this line and it works
    def stop(self):
        self.quit();
    def echo(self):
        print "Recieved finished() signal"
        app.quit()

if __name__=="__main__":
    app = QtGui.QApplication(sys.argv)
    x = WhenDeleted(app)
    x.start()
    sys.exit(app.exec_())
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to