python - 如何将对象发送到用 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”卡片对象中的最后一个?
我希望每条线路都有自己的卡
解决方案
由于后期绑定闭包,您的 lambda 函数没有按照您的预期执行。
推荐阅读
- java - 根据特定字符序列拆分字符串
- javascript - Javascript If else 语句仅返回 'else'
- php - 错误方法付款无效?客户 ID =?Magento 2
- laravel - Laravel 中的 CoreUI vue.js 模板无法正常工作
- javascript - Kendo Grid ASP.Net 更新错误的行
- android - 您如何获得 Android 中最近的应用程序列表?
- javascript - 如何循环思维图并创建特定对象?使用 Javascript
- python - 给定起点的矩阵中的最大和路径
- scala - 如何将案例对象用作案例类中的字段并转换为 Spark DataSet?
- r - 由于更改了 Web 结构,将 Web 表复制到 ms excel 不再起作用