我最近开始使用kivy,我对背景的变化有疑问。 我需要创建具有不同背景的多个小部件。 我做错了,但我没有得到:
Kv file:
<MyWidget@BoxLayout>:
canvas.before:
Color:
rgb: self.rgb
Rectangle:
pos: self.pos
size: self.size
main.py
widget = Widget()
myWidget1 = Factory.MyWidget(rgb=[1,0,0])
myWidget2 = Factory.MyWidget(rgb=[0,1,0])
myWidget3 = Factory.MyWidget(rgb=[0,0,1])
widget.add_widget(myWidget1)
widget.add_widget(myWidget2)
widget.add_widget(myWidget3)
如何让它变得更好?
答案 0 :(得分:1)
正如上面的评论所说,问题是MyWidget没有&#39; rgb&#39;属性(也不是BoxLayout)。
在python文件中,您需要使用该属性创建类。具体来说,您应该创建一个ListProperty属性,以便kv端的所有自动绑定都会发生。
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
class MyWidget(Boxlayout):
rgb = ListProperty([0,0,0])