[PyQt] Weird behaviour of destroyed() slots

Giovanni Bajo rasky at develer.com
Wed Jul 23 14:42:18 BST 2008


Hi Phil:

=============================================================================
import sip
from PyQt4.Qt import *

called = []

class Core(QObject):
     def __init__(self, parent=None):
         QWidget.__init__(self, parent)
         QObject.connect(self, SIGNAL("destroyed()"), self.callback)
         QObject.connect(self, SIGNAL("destroyed()"), lambda: 
self.callback())
     def callback(self):
         called.append("done")

app = QApplication([])
core = Core(app)
sip.delete(core)

assert len(called) == 2, called
=============================================================================
Traceback (most recent call last):
   File "bugpyqt.py", line 18, in <module>
     assert len(called) == 2, called
AssertionError: ['done']

The slot with "lambda" is called, but the other one is not.
-- 
Giovanni Bajo
Develer S.r.l.
http://www.develer.com


More information about the PyQt mailing list