我试图创建一个显示图像文件的屏幕,该图像文件的路径存储在ListProperty中。我知道错误消息表明Kivy在ListProperty创建之前尝试访问该值,但我不知道如何解决这个问题。
这是我的main.py脚本中的一个片段,其中属性初始化为包含单个空字符串的空列表,并调用构建方法:
presentation = Builder.load_file("main.kv")
class MainApp(App):
image_list = ListProperty([''])
def build(self):
return presentation
if __name__ == '__main__':
MainApp().run()
这是main.kv的一部分,其中使用了属性:
<Screen1>:
name: 'screen1'
BoxLayout:
orientation: 'horizontal'
Picture:
source: app.image_string.pop()
抛出的异常如下:
...
BuilderException: Parser: File "main.kv", line 71:
...
69: orientation: 'horizontal'
70: Picture:
>> 71: source: app.image_string.pop()
72:
如何解决此问题的任何指导将非常感激。谢谢!
编辑 Reader FIns指出我正在调用 image_string 而不是image_list,但即使进行了更正,我也会遇到同样的错误:
BoxLayout:
orientation: 'horizontal'
Picture:
source: app.image_list.pop()
BuilderException: Parser: File "main.kv", line 71:
而且......
BuilderException: Parser: File "main.kv", line 71:
...
69: orientation: 'horizontal'
70: Picture:
>> 71: source: app.image_list.pop()
答案 0 :(得分:2)
在构建方法中加载kivy设计语言在此示例中起作用:
from kivy.app import App
from kivy.properties import ListProperty
from kivy.base import Builder
class MainApp(App):
image_list = ListProperty([''])
def build(self):
presentation = Builder.load_string("""
Screen:
name: 'screen1'
BoxLayout:
Image:
source: app.image_list.pop()
""")
return presentation
if __name__ == '__main__':
MainApp().run()