【问题标题】:Kivy: How to change a widget's background color at runtime?Kivy:如何在运行时更改小部件的背景颜色?
【发布时间】:2019-04-15 19:09:53
【问题描述】:

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

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

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

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

布局内的一些小部件阻挡了布局的背景,这些小部件不必更改颜色,但无论如何都没有关系,我有兴趣至少从一行中更改所有 textLabels 中的背景。

【问题讨论】:

  • 这基本上是没有障碍的,你在创作过程中所了解的,你可以在其他任何时间做的事情。您能否详细说明您卡在哪里?

标签: python colors widget kivy


【解决方案1】:

你提到了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小部件的背景颜色,只需循环执行上述操作即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2015-08-14
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多