Python Kivy:AttributeError:&x27;标签';对象没有属性';a';

Python Kivy:AttributeError:&x27;标签';对象没有属性';a';,python,kivy,kivy-language,Python,Kivy,Kivy Language,我制作了一个简单的应用程序,它有两个同时运行的计时器。一个倒计时,另一个倒计时 我最初试着在标签下缩进“text:str(round(self.a,1)),标题中的错误就会出现。我现在通过如下所示修改代码解决了这个问题(最后在.kv文件部分进行了更改): 从kivy.app导入应用 从kivy.uix.label导入标签 从kivy.animation导入动画 从kivy.properties导入NumericProperty 从随机导入randint 从kivy.uix.boxlayout导入

我制作了一个简单的应用程序,它有两个同时运行的计时器。一个倒计时,另一个倒计时

我最初试着在标签下缩进“text:str(round(self.a,1)),标题中的错误就会出现。我现在通过如下所示修改代码解决了这个问题(最后在.kv文件部分进行了更改):

从kivy.app导入应用
从kivy.uix.label导入标签
从kivy.animation导入动画
从kivy.properties导入NumericProperty
从随机导入randint
从kivy.uix.boxlayout导入boxlayout
课堂作业(盒子布局):
a=数值性质(randint(3,7))
b=数值属性(0)
def启动(自):
self.anim=动画(a=0,持续时间=self.a)
self.anim&=动画(b=15,持续时间=15)
self.anim.repeat=真
self.anim.start(self)
班级请柬(App):
def生成(自):
p=请假工作()
p、 开始()
返回p
如果名称=“\uuuuu main\uuuuuuuu”:
请执行app().run()
方向:“垂直”
文本_1:str(圆形(self.a,1))
文本2:str(圆形(self.b,1))
标签:
文本:root.text\u 1
标签:
id:数一数
text:root.text_2

虽然代码现在做了它应该做的事情,但我的问题是,为什么这会纠正错误?我真的不明白为什么会有不同?

问题在于变量的范围,在.kv中,至少有以下几种方法可以访问元素:

-
id
: 当使用
self
时,这意味着同一节点引用自身,在前面的示例
property\u b:self.bar\u property
中指出
b
property\u b
的属性将采用与
b
bar\u property
相同的值。它与python类中的用法相同

-
根目录
: 二,


方向:“垂直”
id:请你工作
标签:
文本:str(圆形(请工作a,1))
标签:
id:数一数
文本:str(圆形(请工作b,1))
from kivy.app import App
from kivy.uix.label import Label
from kivy.animation import Animation
from kivy.properties import NumericProperty
from random import randint
from kivy.uix.boxlayout import BoxLayout

class PleaseWork(BoxLayout):
    a = NumericProperty(randint(3,7))
    b = NumericProperty(0)

    def start(self):

        self.anim = Animation(a=0, duration=self.a)
        self.anim &= Animation(b=15, duration=15)
        self.anim.repeat = True
        self.anim.start(self)


class PleaseApp(App):
    def build(self):
        p = PleaseWork()
        p.start()
        return p

if __name__ == "__main__":
    PleaseApp().run()


<PleaseWork>
    orientation: 'vertical'
    text_1: str(round(self.a, 1))
    text_2: str(round(self.b, 1))
    Label:
        text: root.text_1
    Label:
        id: count_up
        text: root.text_2
<A>:
   id: a
   property_a: b.foo_property
   <B>: 
       id: b
       property_b: a.bar_property
<A>:
    property_a: self.foo_property
    B:
        property_b: self.bar_property
<A>:
    B:
        property_b: root.bar_property

<C>:
    D:
        property_d: root.bar_property
<PleaseWork>
    orientation: 'vertical'
    Label:
        text: str(round(root.a, 1))
    Label:
        id: count_up
        text: str(round(root.b, 1))
<PleaseWork>
    orientation: 'vertical'
    id: please_work
    Label:
        text: str(round(please_work.a, 1))
    Label:
        id: count_up
        text: str(round(please_work.b, 1))