Kivy 变量背景小部件
Kivy variable background widget
最近开始使用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)
我怎样才能让它变得更好?
正如上面的评论所说,问题是 MyWidget 没有 'rgb' 属性(也没有 BoxLayout)。
在 python 文件中,您需要创建具有该属性的 class。具体来说,您应该创建一个 ListProperty 属性,以便在 kv 端发生所有自动绑定。
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
class MyWidget(Boxlayout):
rgb = ListProperty([0,0,0])
最近开始使用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)
我怎样才能让它变得更好?
正如上面的评论所说,问题是 MyWidget 没有 'rgb' 属性(也没有 BoxLayout)。
在 python 文件中,您需要创建具有该属性的 class。具体来说,您应该创建一个 ListProperty 属性,以便在 kv 端发生所有自动绑定。
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
class MyWidget(Boxlayout):
rgb = ListProperty([0,0,0])