Kivy: Как изменить цвет фона виджета во время выполнения? - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу создать строки виджетов, которые содержат разные виджеты столбцов, некоторые из них - textLabels.Я хочу изменить цвет фона строки во время выполнения.Для этого я использую горизонтальные макеты в виде строк.Можно ли изменить цвет фона этих макетов во время выполнения?

Все решения, которые я нашел, - это изменить цвет фона в момент их создания, но он не работает во время выполнения.

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

Это виджеты, с которыми я в данный момент работаю, но я открыт для использования виджетов другого типа для этого.

Некоторые виджеты внутри макета блокируют фон макета, но это не обязательноизмените цвет, но это не имеет значения в любом случае, я заинтересован в изменении фона во всех текстовых метках, по крайней мере, из ряда.

1 Ответ

1 голос
/ 16 апреля 2019

Вы упоминаете textLabel (я полагаю, вы имеете в виду Label).Вы можете легко изменить цвет фона Label, определив пользовательский Label, назовем его MyLabel следующим образом:

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

Это определяет rgba свойство 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

Если вы хотите изменить цвет фона строки MyLabel виджетов, просто выполните вышеуказанное в цикле.

...