[英]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
这定义了MyLabel
的rgba
属性,可以在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.