kivy: 按下按钮 -> 改变标签的颜色

kivy: press button -> change color of a label

在 kv 文件中我添加了一个标签并更改了它的颜色:

Label:
    id: ampel_rot
    canvas.before:
    Color:
        rgba: 1, 0, 0, 0.3
    Ellipse:
        size: self.size

我的目标是创建某种交通信号灯,以便 GUI 的用户对流程有某种视觉反馈。 为此,我必须在运行时更改此标签的颜色。 但是在这种情况下,我不明白 kv 文件和 main.py.

之间的联系

我试过类似的方法:

self.ids.ampel_rot.canvas.before.Color.rgba(1, 0, 0, 1)

这当然行不通。

那么如何更改 main.py 中的标签颜色?有人可以启发我吗?非常感谢!

最简单的方法是使用中介属性

from kivy.properties import ListProperty
class ColourLabel(Label):
    ellipse_colour = ListProperty([1, 0, 0, 1])

然后在kv

<ColourLabel>:
    canvas.before:
        Color:
            rgba: self.ellipse_colour
        Ellipse:
            size: self.size
            pos: self.pos

注意我在Ellipse中添加了pos,一般情况下大概是必须的。

然后您可以将 ColourLabel 添加到原始示例所在的同一规则,修改代码变为 self.ids.ampel_rot.ellipse_colour = (1, 1, 1, 1)