我是Kivy的新手,我很难尝试填充视图。我知道我可以在item_strings
文件中使用kv
属性,但我想以编程方式进行,因为我计划稍后使用适配器。
我想要实现的是这样的:
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
。
答案 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>: