Kivy:如何在运行时更改小部件的背景颜色?

时间:2019-04-15 19:09:54

标签: python colors widget kivy

我想创建包含不同列小部件的小部件行,其中一些是textLabels。我要做的是能够在运行时更改行的背景色。为此,我将水平框布局用作行。是否可以在运行时更改此布局的背景颜色?

我发现的所有解决方案都是在创建背景时更改背景颜色,但是在运行时无法正常工作。

kivy.uix.boxlayout.BoxLayout(orientation="horizontal", size_hint_y=None)

这是我目前正在使用的小部件,但我愿意为此使用另一种类型的小部件。

布局中的一些小部件可以阻止布局的背景,这些小部件不必更改颜色,但是无论哪种方式都没有关系,我有兴趣至少在一行中更改所有textLabel中的背景。

1 个答案:

答案 0 :(得分:1)

您提到textLabel(我想您的意思是Label)。您可以通过定义自定义Label来轻松修改Label的背景颜色,我们将其称为MyLabel为:

class MyLabel(Label):
    rgba = ListProperty([0.5, 0.5, 0.5, 1]) # will be used as background color

这定义了rgba的{​​{1}}属性,可以在MyLabel文件中引用为:

kv

然后可以使用以下方式更改<MyLabel>: canvas.before: Color: rgba: self.rgba Rectangle: pos: self.pos size: self.size 实例(称为MyLabel)的背景颜色:

mylab

如果您想更改一行mylab.rgba = [1, 0, 0, 1] # or any other rgba 小部件的背景颜色,只需循环执行上述操作即可。