Kivy - Error: "object has no attribute" when I called it from .kv file

Kivy - Error: "object has no attribute" when I called it from .kv file

当我运行下一段代码时:

class VState(State):

def __init__(self, name='', stateType=None, **kwargs):
    super(VState, self).__init__(**kwargs)      
    self.vBackground = 'my_background'
    self.name = name
    
def setBackgroundImage(self):

  print (self.vBackground)

  return 'gui/my_background_image'

会完成的。当我从 .kv 文件调用 setBackgroundImage() 方法时,出现错误:“AttributeError: 'VState' object has no attribute 'vBackground'”

.kv 文件:

...

source: 'atlas://' + root.setBackgroundImage()

但是当我运行上面的代码没有引用任何属性时,它会再次完成......没有行

print (self.vBackground)

会完成的。为什么我不能引用 kv 文件中的任何属性?

感谢您提供一些想法...

kv 首先在小部件 __init__ 期间评估,在这种情况下发生在您设置 self.vBackground.[=12 之前 之前的超级调用 =]

您可以改为将顺序更改为

self.vBackground = 'my_background'
super(VState, self).__init__(**kwargs) 

使用 StringProperty 可能会更好。