[PyQt] Problem sometimes connecting signal/slot in a loop

Kálmán Viktor viktorvector at gmail.com
Thu May 16 23:51:55 BST 2019


It looks like you are running into this issue:
https://docs.python.org/2/faq/programming.html#why-do-lambdas-defined-in-a-loop-with-different-values-all-return-the-same-result

Luna Tuna <fruitfulapproach at gmail.com> ezt írta (időpont: 2019. máj. 16.,
Cs, 23:43):

> Hi,
>
> Codes:
>
>     def setup(self):
>         for color in self._colors:
>             attr = color + ' color button'
>             attr = attr.replace(' ', '_')
>             button = getattr(self, attr)
>             self._buttons[color] = button
>             button.clicked.connect(lambda: self.show_color_dialog(color))
>
> When you do something like this, then all connections are made to the last
> color in the list,
> so clicking on "pen" color will always change "edit locked label" color
> (the last in list).
>
> I've fixed it before by making the connection in a dummy function.  But is
> there a better way to resolve this?
>
> Thanks.
>
> -Fruitful Approach
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20190517/bc42c68c/attachment.html>


More information about the PyQt mailing list