0

私はkivyから始めていますが、解決できない障害にすでにぶつかっています。私が望むのは、kv ファイルで動的な Ellipse クラスを作成し、それをウィジェットのキャンバスに投影することだけです。

私が見ているのは、楕円として認識されていますが、どの属性も引き継がれていないことです (特にサイズ)。

以下にコードと、表示されているもののスクリーンショットを示します。1 つの Ellipse の余分なサイズは、問題をより視覚的に表示するために作成されたものであることに注意してください。それがなければ、3 つの非常に大きな円が見えます。

私はubuntu 16.04でこれをやっています。それが重要な場合

私を助けてくれてありがとう:)

main.py

#!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 はウィジェットではなく、EventDispatcher でさえありません。動的なクラス分けがまったく機能することに驚いています (これはバグのようです。その状況を検出して試行を拒否できるはずです)。 kv 言語で正しく動作します。

于 2016-12-26T09:10:29.320 に答える