0

我从 kivy 开始,我已经遇到了我无法解决的障碍。我想要的只是在 kv 文件中创建一个动态 Ellipse 类,然后将其投影到小部件的画布上。

我看到的是它被识别为椭圆,但没有任何属性被接管(最显着的是大小)。

我在下面给出了我的代码和我看到的截图。请注意,一个椭圆中的额外尺寸是为了您的观看乐趣而制作的,以使问题更加直观。没有它,我会看到三个非常大的圆圈。

我在 ubuntu 16.04 上这样做。如果这很重要

非常感谢您提前帮助我:)

主文件

#!usr/bin/python3

from kivy.app import App
from kivy.uix.widget import Widget


class SchemeEditor(Widget):
    def __init__(self,**kwargs):
        super(SchemeEditor, self).__init__(**kwargs)


class SchemeApp(App):
    def build(self):
        self.load_kv('scheme.kv')
        return SchemeEditor()


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

方案.kv

#:kivy 1.9.1

<Dot@Ellipse>:
    size: 10, 10
    color: 10, 0, 0

<SchemeEditor>:
    canvas:
        Dot:
            id: 1
            pos: root.width / 2, (root.width / 3) * 2
            size: 10, 10

        Dot:
            id: 2
            pos: root.width / 3, root.height / 3

        Dot:
            id: 3
            pos: (root.width / 3) * 2, root.height / 3

截屏 截屏

4

1 回答 1

1

Ellipse 不是 Widget,甚至不是 EventDispatcher。我很惊讶动态分类它完全有效(这似乎是一个错误,我们应该能够检测到这种情况并拒绝尝试),但无论实际发生什么都可能归结为 Ellipse 属性实际上不是 Kivy 属性这将与 kv 语言一起正常工作。

于 2016-12-26T09:10:29.320 回答