我对 kivy 很陌生,ids 和对象属性让我很困惑

问题描述 投票:0回答:1

所以我对这个kivy或编程真的很陌生,我像大多数人一样在网上看了一个教程,我复制了视频的代码并且它有效,所以我想从头开始,一切都很顺利,直到我遇到这个问题,它是关于对象属性和 .kv
由于某种原因,我收到错误 NameError: name 'shape' is not Defined,这是在我完成教程之后想要从头开始

<MyFirstWidget>:
    shape: shape
    canvas:
        Color: 
            rgba: 1,1,1,1
        Ellipse:
            id: "shape"
            pos: 0,0

这是Python文件

from kivy.app import App
from kivy.uix.scatter import Scatter
from kivy.properties import ObjectProperty
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout

class MyFirstWidget(Scatter):
    shape = ObjectProperty(None)

class MainApp(App):
    def build(self):
        return MyFirstWidget()

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

我只是想让它工作,如果不确保它知道我引用的是椭圆,我就无法真正取得进展

python kivy kivy-language
1个回答
0
投票

kv语言中的id不是字符串。您的 id 值“形状”周围有引号,应该是不带引号的形状。 来自 kv 语言网页 https://kivy.org/doc/stable/guide/lang.html#

警告当为 id 赋值时,请记住该值不是 细绳。没有引号:好 -> id: value,坏 -> id: 'value' An id 是小部件的弱引用,而不是小部件本身。作为一个 结果,存储 id 不足以阻止小部件 正在被垃圾收集。

© www.soinside.com 2019 - 2024. All rights reserved.