如何将回调正确绑定到Python Kivy库中循环中的每个元素

我有以下代码

from functools import partial

class dishesScreen(Screen):

    def on_pre_enter(self):
        Window.size = (800,800)
    
        for i in range(10):
            self.layout.add_widget(AsyncImage(source='<url>',allow_stretch=True,size_hint_y=None,size_hint_x=None))
            dish_widget = self.get_params_layout()
            dish_widget.bind(on_touch_down=partial(self.move,data[i]))
            self.layout.add_widget(dish_widget)

    def get_params_layout(self):
        params_layout = BoxLayout(orientation='vertical',spacing=10,padding=10)
        return params_layout

    def move(self,*args):
        # some actions here
        pass

我想做的是使用特定于move()列表中每个元素的参数调用BoxLayout函数

如果我单击第二个元素-我希望使用特定于第二个元素的参数执行move()函数,如果我单击第七个元素-我希望执行特定于参数的move()函数用于第7个元素,等等。

相反,无论我单击哪个元素,move()函数每次从最后一个元素开始到第一个元素都使用该元素的参数时,都会执行10次。

我认为这是因为我在dish_widgetlayout添加self.layout.add_widget(dish_widget)。这意味着当我单击某个地方时,实际上我单击了layout,并且程序执行了附加到move()的所有10个layout函数。但是无法弄清楚如何改变这种行为。我只需要调用move()函数-唯一的一个附加到我在列表中单击的元素(BoxLayout)上。有人可以帮忙吗?

更新:

这是标记

<dishesScreen>:
    layout: layout
    ScrollView:
        do_scroll_x: False
        do_scroll_y: True
        GridLayout:
            id: layout
            cols:2
            size_hint: 1,None
            height: self.minimum_height
            spacing: 5,5

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...