如何在 kivymd 中更改其他 kv 字符串的 属性?
How to change other kv string's property in kivymd?
我正在使用 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()
我正在使用 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()