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])