list - 如何更改 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()
我想这样显示 List ,但是我的代码出现了这个错误:
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()
推荐阅读
- wordpress - 从帖子查询中获取元值的总数
- r - Rserve() 套接字问题
- angularjs - ngInclude 的 angularjs 智能表(st-table)问题
- windows - 在 Windows 上安装 vue awesome swiper 失败
- terminal - 使用终端 (mac os) 安装 mICA 工具箱
- windows - 运行 docker sonarscanner begin 命令时出错
- html - 使 bootstrap CHECKBOX 看起来像 bootstrap BADGE
- sql - 无法将 oracle 数据库连接到 Popsql
- unit-testing - 谷歌单元测试,容量
- javascript - 如何增加单元格值并在它大于 Google 表格中的限制时停止它