我已经在python文件(main.py)中编写了python代码,以创建一个kivy应用,该应用包含动态创建的标签,效果很好。 这是main.py文件
main.py
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
class createLabels(GridLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.cols=1
labels=[Label(text='Label '+str(i)) for i in range(5)]
[self.add_widget(label) for label in labels]
class DocApp(App):
def build(self):
return createLabels()
if __name__=="__main__":
DocApp().run()
但是,我想使用kivy语言文件(.kv)动态创建与上述标签类似的标签。我不确定是否可以在.kv文件中使用列表和for语句。我尝试了类似类型问题之一中提到的解决方案,但是没有用。
答案 0 :(得分:0)
您可以使用on_kv_post
,它在您使用on_kv_post
的kv类准备就绪时运行。并且动态地(如按按钮一样)与下面的示例基本相同。
from kivy.app import App
from kivy.lang import Builder
KV = '''
#: import Label kivy.uix.label.Label
GridLayout:
cols: 1
on_kv_post:
[self.add_widget(Label(text="Label " + str(i))) for i in range(9)]
'''
class TestApp(App):
def build(self):
return Builder.load_string(KV)
if __name__ == '__main__':
TestApp().run()