2015-07-10 2 views
1

У меня есть проблема с настройкой цвета линии в холсте.Kivy: цвет линии в холсте не обновляется

kivy drawable app

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

Вот мой пример киловольт файл:

#:kivy 1.0.9 

<Drawable>: 
    rectangleColor: 1,0,0,1 if self.visible else 0,0,0,0 
    canvas: 
     Color: 
      rgba: self.rectangleColor 
     Line: 
      rectangle: self.x+0.25*self.width, self.y+0.25*self.height, 0.5*self.width, 0.5*self.height 

А вот соответствующий питон файл:

#!/usr/bin/env python3 

# Kivy raw imports 
from kivy.uix.widget import Widget 
from kivy.properties import NumericProperty, ReferenceListProperty,\ 
     BooleanProperty, ListProperty 

class Drawable(Widget): 
    visible = BooleanProperty(False) 
    rectangleColor = ListProperty([]) 

    def on_touch_down(self, touch): 
     if self.collide_point(*touch.pos): 
      print("touch down") 
      self.visible = True 
      return True 
     return super().on_touch_down(touch) 

    def on_touch_up(self, touch): 
     print("touch up\n") 
     self.visible = False 
     return super().on_touch_up(touch) 

if __name__ == "__main__": 

    from kivy.app import App 
    class drawableApp(App): 
     def build(self): 
      return Drawable() 
    drawableApp().run() 

У вас есть представление о том, что я делаю не так?

ответ

2

Используйте скобки.

<Drawable>: 
    rectangleColor: (1,0,0,1) if self.visible else (0,0,0,0) 
+0

Спасибо, корень ничего не изменил, кроме скобок! –

+0

Как только редактирование будет подтверждено, я подтвержу ответ. Спасибо @ kiok46 –

+0

см. Редактирование в ответ. – kiok46

Смежные вопросы