首页 > 解决方案 > 如何将对象发送到用 on_press 编写的函数?

问题描述

他们有一个简单的模型

class Card_:
    def __init__(self, numb, adr, text, date, st):
        self.number = numb
        self.adress = adr
        self.text = text
        self.date = date
        self.status = st

有一个代码来创建 MDlist 行

for i, card in enumerate(_card_list):
                    print(card)
                    tabs_list[-1].ids.main_list.add_widget(ThreeLineAvatarIconListItem(text=f'Задача № {card.number}, {card.text}',
                                                                            secondary_text=str(card.data),
                                                                            tertiary_text=card.status,
                                                                            on_press=lambda t: self.card_open(card)))

但是 on_press 我收到了“for”卡片对象中的最后一个

<0x000001CA350406C8 处的 Card.Card_ 对象>

<0x000001CA3F402048 处的 Card.Card_ 对象>

<0x000001CA3F999F48 处的 Card.Card_ 对象>

<0x000001CA3F99A2C8 处的 Card.Card_ 对象>

<0x000001CA3F99AD08 处的 Card.Card_ 对象>

<0x000001CA3F402088 处的 Card.Card_ 对象>

<0x000001CA3F999FC8 处的 Card.Card_ 对象>

<0x000001CA3F402188 处的 Card.Card_ 对象>

<0x000001CA3F99AA88 处的 Card.Card_ 对象>

<0x000001CA3F99A188 处的 Card.Card_ 对象>

[INFO] [Base] 启动应用程序主循环

/在card_open中打印(卡片) /

<0x000001CA3F99A188 处的 Card.Card_ 对象>

<0x000001CA3F99A188 处的 Card.Card_ 对象>

card_open 函数

def card_open(self, card):
    print(card)

    self.root.transition.direction = 'left'
    self.root.current = 'card'
    self.root.ids.content.title = f"Задача №{card.number}"

为什么我收到“for”卡片对象中的最后一个?

我希望每条线路都有自己的卡

标签: pythonkivykivy-languagekivymd

解决方案


由于后期绑定闭包,您的 lambda 函数没有按照您的预期执行。


推荐阅读