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

时间:2017-01-31 19:30:00

标签: python kivy kivy-language

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

我想要实现的是这样的:

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()

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

1 个答案:

答案 0 :(得分:0)

似乎我没有为.col-1, .col-2, .col-3, .col-4 { float: left; width: 100%; } .col-1, .col-2, .col-3, .col-4 { width: 25%; } .col-2 { width: 50%; } .col-3 { width: 75%; } .col-4 { width: 100%; } 定义规则,因此在我的kivy文件中添加SpikeRoot解决了我的问题。所以,最后我的Python文件没有变化,但是我将我的Kivy文件更改为:

<SpikeRoot>: