如何将模板颜色设置为kivy UI的画布?

时间:2015-03-23 13:37:24

标签: python canvas colors kivy

HeJ小鼠

我喜欢为用于绘制多个GUI组背景的颜色定义模板。

我的kivy kv代码如下所示:

<BGRcolor@Color>:
    rgb: 0.176, 0.176, 0.176

<myParamBox@BoxLayout>:
    canvas:
        BGRcolor:

        Rectangle:
            pos: root.pos
            size: root.size
        Color:
            rgb: 0.3, 0.3, 0.3
        Line:
            points: root.pos[0],root.pos[1], root.pos[0] + root.size[0],root.pos[1], root.pos[0] + root.size[0],root.pos[1] + root.size[1], root.pos[0] ,root.pos[1] + root.size[1], root.pos[0],root.pos[1]
    padding: 2

画布操作的Color设置不起作用。任何想法?

2 个答案:

答案 0 :(得分:0)

颜色不是一个小工具,所以你不能像这样构建它。实际上,并没有真正的语法可以使这更简洁,但你可以使您想要拥有此颜色的所有小部件继承自具有Color规则的另一个Widget。

答案 1 :(得分:0)

我找到了一个有效的解决方案:

class myApp(kivy.app.App):

    BGcolor = (0.176, 0.176, 0.176, 1.0)

kivy.lang.Builder.load_string('''
<myParamBox@BoxLayout>:
    canvas:
        Color:
            rgb: app.BGcolor
        Rectangle:
            pos: root.pos
            size: root.size
        Color:
            rgb: 0.3, 0.3, 0.3
        Line:
            points: root.pos[0],root.pos[1], root.pos[0] + root.size[0],root.pos[1], root.pos[0] + root.size[0],root.pos[1] + root.size[1], root.pos[0] ,root.pos[1] + root.size[1], root.pos[0],root.pos[1]
    padding: 2
''')

在app实例中定义颜色touple并在模板中引用它。