[PyKDE] PyQt not refing slot methods - bug?
Burley, Brent
Brent.Burley at disney.com
Thu Aug 29 21:04:01 BST 2002
I was trying to use a lambda method as a slot method like this:
import sys
from qt import *
def hello(): print 'hello'
app = QApplication(sys.argv)
b = QPushButton('hello', None)
QObject.connect(b, SIGNAL('clicked()'), lambda: hello())
app.setMainWidget(b)
b.show()
app.exec_loop()
The lambda method never gets called. It appears that PyQt doesn't ref slot methods so the lambda method gets deleted before it can be used. If I change the code to keep a reference to the lambda, it works fine:
l = lambda: hello()
QObject.connect(b, SIGNAL('clicked()'), l)
Is it a bug that PyQt isn't refing slot methods? Doesn't anyone use lambdas for slots?
Brent Burley
brent.burley at disney.com
More information about the PyQt
mailing list