[PyQt] lambda slot problem

Brian Kelley kelley at eyesopen.com
Fri Apr 3 01:28:21 BST 2009


You are seeing a scoping issue, to be safe, I would write the lambda as follows

lambda changeStatus=self.changeStatus,m=msg,a=activated: changeStatus(m,a)

This ensures that the bindings of self, activated and msg are what you expect when the lambda function is executed.

On 4/2/09 7:16 PM, "Linos" <info at linos.es> wrote:

Hello,
        i suppose i am making any mistake here but i dont know why, for example:

for checkbox, msg in ((self.printedCheckBox, "printed"), (self.finishedCheckBox,
"finished")):
        self.connect(checkbox, SIGNAL("clicked(bool)"), lambda activated:
self.changeStatus(msg, activated))

This one ever passes the last msg, "finished", although the checkbox
self.printedCheckBox is checked.

self.connect(checkbox, SIGNAL("clicked(bool)"),
functools.partial(self.changeStatus, msg)   works ok, why the lambda it is only
using the last msg string ever?

Regards,
Miguel Angel.
_______________________________________________
PyQt mailing list    PyQt at riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20090403/d00d2fef/attachment.html


More information about the PyQt mailing list