【问题标题】:How to return selected item from KivyMD list?如何从 KivyMD 列表中返回所选项目?
【发布时间】:2021-04-12 15:42:55
【问题描述】:

我正在尝试编写代码来返回列表中单击的项目的编号,但我不知道 lambda x 之后需要做什么:

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import OneLineListItem

KV = '''
ScrollView:

    MDList:
        id: container
'''


class Test(MDApp):
    def build(self):
        return Builder.load_string(KV)

    def on_start(self):
        for i in range(20):
            self.root.ids.container.add_widget(
                OneLineListItem(text=f"Single-line item {i}", on_press=lambda x: print("item number"))
            )

Test().run()

【问题讨论】:

    标签: python kivy kivy-language kivymd


    【解决方案1】:

    这是在循环中定义 lambda 时的常见问题。解决方法是为 lambda 创建一个新参数,即循环变量的当前值。尝试替换:

    OneLineListItem(text=f"Single-line item {i}", on_press=lambda x: print("item number"))
    

    与:

    OneLineListItem(text=f"Single-line item {i}", on_press=lambda x, item=i: print("item number", item))
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 2018-01-30
      • 2018-11-06
      • 1970-01-01
      相关资源
      最近更新 更多