2016-12-24 9 views
0

Я начинаю с kivy, и я уже попал в блокпост, который я не могу решить. Все, что я хочу, - создать динамический класс Ellipse в файле kv, а затем проецировать его на холст виджета.Динамический класс не действует - Ellipse

Что я вижу, так это то, что оно распознается как эллипс, но ни один из атрибутов не берется (в основном размер).

Я дал свой код ниже и снимок экрана, что я вижу. Обратите внимание, что дополнительный размер в одном эллипсе был сделан для удобства просмотра, чтобы сделать проблему более визуальной. без него я вижу три очень больших круга.

Я делаю это на 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() 

scheme.kv

#:kivy 1.9.1 

<[email protected]>: 
    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 

скриншот screenshot

ответ

1

Ellipse - это не виджет или даже EventDispatcher. Я удивлен тем, что динамически классифицировать его вообще (это похоже на ошибку, мы должны уметь обнаруживать эту ситуацию и отказываться от попытки), но все, что происходит на самом деле, вероятно, сводится к свойствам Ellipse, которые на самом деле не являются свойствами Kivy который будет корректно работать с языком kv.

+0

Thanks @inclement :) Теперь я создал виджет и нарисовал эллипс на холсте виджета. Я предполагаю, что это правильный способ сделать это. Есть ли хороший учебник, который подробно рассматривает это? (за исключением Понга). Благодаря :) – Nebelhom