[PyKDE] PyQt4 signals and closures

Carlos Scheidegger cscheid at sci.utah.edu
Sun Jun 25 18:49:13 BST 2006


Hi everyone,

I'm experimenting with PyQt4 signals. According to the documentation,  
any Python callable can be used as a slot. However, I can't get  
closures to work as I would expect them to. Here's some sample code  
that exercises the situation:

from PyQt4 import QtCore

#!/usr/bin/env python

class A(QtCore.QObject):
     def __init__(self):
         QtCore.QObject.__init__(self)
     def makeClosure(self, x):
         def f():
             print x
         return f

a = A()
a.connect(a, QtCore.SIGNAL("testClosure"), a.makeClosure(5))

a.makeClosure(6)()

a.emit(QtCore.SIGNAL("testClosure"))

Executing this only prints "6" to stdout on my Intel MacBook running  
PyQt4.

PyQt4 version: mac-gpl-snapshot-20060604
sip version: sip-snapshot-20060525
Qt version: 4.1.3

Is this a known issue? If any more info is needed to reproduce this,  
let me know.

Thank you very much in advance,
-carlos




More information about the PyQt mailing list