我想创建包含不同列小部件的小部件行,其中一些是textLabels。我要做的是能够在运行时更改行的背景色。为此,我将水平框布局用作行。是否可以在运行时更改此布局的背景颜色?
我发现的所有解决方案都是在创建背景时更改背景颜色,但是在运行时无法正常工作。
kivy.uix.boxlayout.BoxLayout(orientation="horizontal", size_hint_y=None)
这是我目前正在使用的小部件,但我愿意为此使用另一种类型的小部件。
布局中的一些小部件可以阻止布局的背景,这些小部件不必更改颜色,但是无论哪种方式都没有关系,我有兴趣至少在一行中更改所有textLabel中的背景。
答案 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
小部件的背景颜色,只需循环执行上述操作即可。