【问题标题】:KivyMD: Adding list widget inside python code, problem with "on_release" - propertyKivyMD:在 python 代码中添加列表小部件,“on_release”问题 - 属性
【发布时间】:2021-01-11 19:12:05
【问题描述】:

尝试向已在 .kv 文件中定义的容器添加一些带有 for 循环的按钮:

代码如下所示:

a_list = ["Spam", "Eggs"]

for i in range(len(a_list)):
    self.ids.container.add_widget(

        ThreeLineListItem(id = a_list[i], text= "Some info ",
                                secondary_text = "More info",
                                tertiary_text = "Final info", 
                          on_release=lambda x: print_me(self.id))
                          )
def print_me(the_id):
    print(the_id)

这只是打印“无”,怎么会?以及如何解决它,使第一个按钮在发布时打印“垃圾邮件”,第二个按钮打印“鸡蛋”?

【问题讨论】:

    标签: python kivy kivymd


    【解决方案1】:
    from kivy.lang import Builder
    
    from kivymd.app import MDApp
    from kivymd.uix.list import OneLineListItem
    
    KV = '''
    ScrollView:
    
        MDList:
            id: box
    
    '''
    
    
    class Test(MDApp):
        def build(self):
            return Builder.load_string(KV)
    
        def on_start(self):
            a_list = ["Spam", "Eggs"]
            for name in a_list:
                self.root.ids.box.add_widget(
                    OneLineListItem(text=name, on_release=self.print_item)
                )
    
        def print_item(self, instance):
            print(instance, instance.text)
    
    
    Test().run()
    

    【讨论】:

      猜你喜欢
      • 2020-12-27
      • 1970-01-01
      • 2021-04-12
      • 2021-03-11
      • 2020-08-24
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      相关资源
      最近更新 更多