KivyMD:在 python 代码中添加列表小部件,"on_release" - 属性 有问题
KivyMD: Adding list widget inside python code, problem with "on_release" - property
尝试将一些带有 for 循环的按钮添加到已在 .kv 文件中定义的容器中:
代码如下所示:
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)
这只是打印“None”,这是怎么回事?以及如何修复它,以便第一个按钮在发布时打印“垃圾邮件”,第二个按钮打印“鸡蛋”?
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()
尝试将一些带有 for 循环的按钮添加到已在 .kv 文件中定义的容器中:
代码如下所示:
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)
这只是打印“None”,这是怎么回事?以及如何修复它,以便第一个按钮在发布时打印“垃圾邮件”,第二个按钮打印“鸡蛋”?
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()