我找到了这个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()
请帮助!
我不明白你的 kv
字符串。首先,开头和结尾的引号要匹配(你用4开头,用3结尾)。其次,你有一个 <scrollview>
条目。我认为这不是一个合法的条目。第三,你剩下的 kv
字符串有不一致的缩进。它看起来像你的 kv
字符串正试图创建一个 ScrollView
含有 MDList
. 如果能成功,那么你的电话 ScrollView
在 build()
方法将创建这样一个 ScrollView
含有 MDList
. 那么这条线 sv.add_widget(ml)
将尝试添加第二个 MDList
至 ScrollView
(这应该会产生一个错误,因为在一个 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
列表,滚动就可以了。