繁体   English   中英

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

[英]Kivy: How to change a widget's background color at runtime?

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

我发现的所有解决方案都是在创建时更改背景颜色,但在运行时不起作用。

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

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

布局中的一些小部件阻止了布局的背景,那些不必改变颜色,但无论如何都无关紧要,我有兴趣至少从一行更改所有textLabels中的背景。

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

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

这定义了MyLabelrgba属性,可以在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

如果要更改一行MyLabel小部件的背景颜色,只需在循环中执行上述操作即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM