如何在应用程序启动时填充 ListView?
How to populate a ListView when application launches?
我是 Kivy 的新手,我很难尝试填充视图。我知道我可以在 kv
文件中使用 item_strings
属性,但我想以编程方式进行,因为我计划稍后使用适配器。
我想达到的效果是这样的:
self.name_list_screen.name_list = [str(i + 1) for i in range(10)]
但是当我 运行 我的应用程序时,它崩溃了,因为 self.name_list_screen
是 None
。
这是我的 Python 文件:
from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
class SpikeRoot(BoxLayout):
name_list_screen = ObjectProperty()
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.name_list_screen.name_list = [str(i + 1) for i in range(10)]
class NameListScreen(BoxLayout):
name_list = ObjectProperty()
class SpikeApp(App):
pass
if __name__ == '__main__':
SpikeApp().run()
这是我的 Kivy 文件
SpikeRoot:
name_list_screen: name_list_scree_widget
NameListScreen:
id: name_list_scree_widget
<NameListScreen>:
name_list: name_list_view
ListView:
id: name_list_view
有什么方法可以在小部件加载后调用,以便加载我的列表视图,也就是说,此时此列表视图不再是 None
。
看来我没有为 SpikeRoot
定义规则,所以将 <SpikeRoot>:
添加到我的 kivy 文件中解决了我的问题。所以,最后我没有对我的 Python 文件做任何更改,但是我将我的 Kivy 文件更改为:
SpikeRoot:
<SpikeRoot>:
name_list_screen: name_list_scree_widget
NameListScreen:
id: name_list_scree_widget
<NameListScreen>:
name_list: name_list_view
ListView:
id: name_list_view
我是 Kivy 的新手,我很难尝试填充视图。我知道我可以在 kv
文件中使用 item_strings
属性,但我想以编程方式进行,因为我计划稍后使用适配器。
我想达到的效果是这样的:
self.name_list_screen.name_list = [str(i + 1) for i in range(10)]
但是当我 运行 我的应用程序时,它崩溃了,因为 self.name_list_screen
是 None
。
这是我的 Python 文件:
from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
class SpikeRoot(BoxLayout):
name_list_screen = ObjectProperty()
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.name_list_screen.name_list = [str(i + 1) for i in range(10)]
class NameListScreen(BoxLayout):
name_list = ObjectProperty()
class SpikeApp(App):
pass
if __name__ == '__main__':
SpikeApp().run()
这是我的 Kivy 文件
SpikeRoot:
name_list_screen: name_list_scree_widget
NameListScreen:
id: name_list_scree_widget
<NameListScreen>:
name_list: name_list_view
ListView:
id: name_list_view
有什么方法可以在小部件加载后调用,以便加载我的列表视图,也就是说,此时此列表视图不再是 None
。
看来我没有为 SpikeRoot
定义规则,所以将 <SpikeRoot>:
添加到我的 kivy 文件中解决了我的问题。所以,最后我没有对我的 Python 文件做任何更改,但是我将我的 Kivy 文件更改为:
SpikeRoot:
<SpikeRoot>:
name_list_screen: name_list_scree_widget
NameListScreen:
id: name_list_scree_widget
<NameListScreen>:
name_list: name_list_view
ListView:
id: name_list_view