Kivy在访问ListProperty时返回“AttributeError:'NoneType'对象没有属性'bind'”

2024-10-01 04:57:00 发布

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

我试图创建一个屏幕,显示一个图像文件,其路径存储在ListProperty中。我知道错误消息表明Kivy试图在创建ListProperty之前访问该值,但是我不知道如何修复这个问题。在

这是我的主.py将属性初始化为包含单个空字符串的空列表并调用生成方法的脚本:

presentation = Builder.load_file("main.kv")

class MainApp(App):
    image_list = ListProperty([''])

    def build(self):
        return presentation

if __name__ == '__main__':
    MainApp().run()

这是主电压kv使用财产的地方:

^{pr2}$

引发的异常如下:

 ...
 BuilderException: Parser: File "main.kv", line 71:
 ...
      69:        orientation: 'horizontal'
      70:        Picture:
 >>   71:            source: app.image_string.pop()
      72:

任何关于如何解决这一问题的指导都将不胜感激。谢谢!在

EDITReader FIns指出,我调用的是image\u 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()

Tags: imageappparsersourcemainlinepoplist
1条回答
网友
1楼 · 发布于 2024-10-01 04:57:00

在这个例子中,在build方法中加载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()

相关问题 更多 >