函数lambda如何使用kivy访问我的循环或循环?

2024-10-05 11:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个新的基于Instagram的应用程序。在

首先,我定义了一个类ImageButton,它将使我创建一个image button:

class ImageButton(ButtonBehavior, Image):
    pass

然后我用这个类在网格中创建图像按钮。 这是我的代码:

^{pr2}$

我当前的目标是当我按下ImageButton时,将网格layout中的ImageButton添加到网格gridtest中。在

我现在遇到的问题是btn.bind(on_press= lambda a:gridtest.add_widget(ImageButton(source = im+'.png') )) 当我按下图像按钮时,我在第二个网格中没有我按下的图像,而是在第一个网格中的最后一个图像。在

我想问题出在lambda,因为它不能访问我的循环,我也不能对它执行循环。 那么解决办法是什么呢?在


Tags: lambda图像image应用程序网格定义buttonpass
1条回答
网友
1楼 · 发布于 2024-10-05 11:31:15

Python中的闭包(这里是用lambda创建的)是后期绑定,调用函数时会查找该值(实际上,如果在循环中定义了循环变量,则使用最后一个值)。在

解决方案是将im作为默认参数传递:

^{1}$

相关问题 更多 >

    热门问题