我能够找到kivymd使用MDlist处理滚动视图的示例。 我正在努力使其运行。
我对收到的错误代码不熟悉,到目前为止,我找不到任何帮助。
这是代码:
from kivy.lang import Builder
from kivy.uix.scrollview import ScrollView
from kivymd.app import MDApp
kv =""""
<scrollview>
ScrollView:
do_scroll_x: False # Important for MD compliance
MDList:
OneLineListItem:
text: "Single-line item"
TwoLineListItem:
text: "Two-line item"
secondary_text: "Secondary text here"
ThreeLineListItem:
text: "Three-line item"
secondary_text: "This is a multi-line label where you can fit more text than usual"
"""
class MainApp(MDApp):
def build(self):
self.root_widget = Builder.load_string(kv)
sv = ScrollView()
ml = MDList()
sv.add_widget(ml)
contacts = ["Paula", "John", "Kate", "Vlad"]
for c in contacts:
ml.add_widget(
OneLineListItem(
text=c
)
)
return self.root_widget
if __name__ == '__main__':
MainApp().run()
请帮助!
答案 0 :(得分:0)
我不明白您的kv
字符串。首先,开头和结尾的引号应匹配(以4开头,以3结尾)。其次,您有一个<scrollview>
条目。我认为这不是合法条目。第三,您的kv
字符串的其余部分缩进不一致。您的kv
字符串似乎正在尝试创建包含ScrollView
的{{1}}。如果可行,则您在MDList
方法中对ScrollView
的调用将创建一个包含build()
的{{1}}。然后,行ScrollView
将尝试向MDList
添加第二个sv.add_widget(ml)
(这会产生错误,因为MDList
中只允许一个孩子)。然后ScrollView
方法将返回与刚创建的ScrollView
无关的build()
。
因此,这是使用在self.root_widget
方法中创建的sv
的代码的修改后的版本:
sv
如果您在build()
列表中添加了足够的名称,则滚动将起作用。
答案 1 :(得分:0)
我不知道这是否会有所帮助。但是我最近重新开始使用 Kivy 开发一个应用程序,并且我有一个带有 MDList 的 ScrollView,如下所示:
<Manager>:
Main:
id: main
name: 'main'
<Main>:
BoxLayout:
orientation: 'vertical'
MDToolbar:
id: toolbar
title: "Email Assistant"
md_bg_color: app.theme_cls.primary_dark
elevation: 9
left_action_items: [["help-circle-outline", lambda x: app.root.get_screen('main').open_dialog()]]
BoxLayout:
orientation: 'horizontal'
columns: 3
ScrollView:
MDList:
id: container
ScrollView:
MDList:
id: container_two
OneLineListItem:
text: 'hello'
ScrollView:
Label:
id: msg
text: 'message'
<Main>:
是我的 python 文件中的一个类,每次加载时我都使用 MDList id
输入联系人列表。
重要的旁注,我的 EmailAssistantApp 类中没有我的列表:
class Manager(ScreenManager):
pass
class Main(Screen):
def on_kv_post(self, *args):
for name, email in load_db(database_file).items():
self.ids.container.add_widget(
NameList(text=name, icon='account')
)
def selected(self, n):
self.ids.name.text = n
class EmailAssistantApp(MDApp):
def build(self):
self.theme_cls = ThemeManager()
return Manager()