KivyMD滚动视图示例

问题描述 投票:0回答:1

我找到了这个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()

请帮助!

python android listview kivy scrollview
1个回答
0
投票

我不明白你的 kv 字符串。首先,开头和结尾的引号要匹配(你用4开头,用3结尾)。其次,你有一个 <scrollview> 条目。我认为这不是一个合法的条目。第三,你剩下的 kv 字符串有不一致的缩进。它看起来像你的 kv 字符串正试图创建一个 ScrollView 含有 MDList. 如果能成功,那么你的电话 ScrollViewbuild() 方法将创建这样一个 ScrollView 含有 MDList. 那么这条线 sv.add_widget(ml) 将尝试添加第二个 MDListScrollView (这应该会产生一个错误,因为在一个 ScrollView). 然后是 build() 方法返回的是 self.root_widget 毫无关系的 sv 你刚刚创建的。

所以这里是你的代码的修改版本,它使用的是 sv 您在您的 build() 方法。

from kivy.uix.scrollview import ScrollView
from kivymd.app import MDApp
from kivymd.uix.list import MDList, OneLineListItem


class MainApp(MDApp):
    def build(self):
        sv = ScrollView()
        ml = MDList()
        sv.add_widget(ml)
        contacts = ["Paula", "John", "Kate", "Vlad"]
        for c in contacts:
            ml.add_widget(
                OneLineListItem(
                    text=c
                )
            )
        return sv

if __name__ == '__main__':
    MainApp().run()

如果你把足够的名字添加到 contacts 列表,滚动就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.