如何在应用程序启动时填充ListView?

2024-04-18 19:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Kivy的新手,我很难填充视图。我知道我可以在kv文件中使用item_strings属性,但我想以编程的方式进行,因为我计划稍后使用适配器。你知道吗

我想要达到的目标是:

self.name_list_screen.name_list = [str(i + 1) for i in range(10)]

但是当我运行我的应用程序时,它崩溃了,因为self.name_list_screenNone。你知道吗

这是我的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()

这是我的奇维档案

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

有没有什么方法可以在加载小部件后调用,以便加载我的this list view,也就是说,此时this list view不再是None。你知道吗


Tags: 文件namefromimportselfviewforscreen
1条回答
网友
1楼 · 发布于 2024-04-18 19:35:37

似乎我没有为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

相关问题 更多 >