如何解决如何在 kivymd 中更改其他 kv 字符串的属性?
我正在使用 kivymd MDList,但我遇到了问题。
我的代码:
from kivymd.app import MDApp
from kivy.lang.builder import Builder
example_list = ['a','b','c']
KV = """
ScrollView:
MDList:
id: List
"""
ListItem = """
OneLineAvatarListItem:
id: item
text: ""
ImageLeftWidget:
source: "icon.png"
"""
class MainApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
for letter in example_list:
self.root.ids.item.text = letter
self.root.ids.List.add_widget(Builder.load_string(ListItem))
MainApp().run()
我想显示像 this 这样的列表,但是我的代码出现了这个错误:
Traceback (most recent call last):
File "kivy\properties.pyx",line 861,in kivy.properties.ObservableDict.__getattr__
KeyError: 'item'
我认为 ListItem
不是 root,但我不知道如何解决这个问题。
如何更改 ListItem 的文本属性?
解决方法
不是从 kv 字符串加载小部件,在这种情况下在 python 中更容易,只需正常创建 MDList 并在循环的每次迭代中,创建一个新的 OneLineAvatarListItem 小部件,设置其属性,添加图像,然后将整个小部件添加到 MDList。
代码
from kivymd.app import MDApp
from kivymd.uix.list import OneLineAvatarListItem,ImageLeftWidget
from kivy.lang.builder import Builder
example_list = ['a','b','c']
KV = """
ScrollView:
MDList:
id: List
"""
class MainApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
global example_list
for letter in example_list:
one_line = OneLineAvatarListItem(text = letter)
image = ImageLeftWidget(source = "icon.png")
one_line.add_widget(image)
self.root.ids.List.add_widget(one_line)
MainApp().run()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。