Kivy Label цвет фона от hex - PullRequest
       1

Kivy Label цвет фона от hex

0 голосов
/ 13 апреля 2019

Можно ли установить Label цвет фона в виде шестнадцатеричного значения, аналогичного приведенному ниже? exaples?

#:import hex kivy.utils.get_color_from_hex

#:set gray_dark hex('#c2c2c2')

<Label@Label>
    background_normal: ''
    bcolor: gray_dark
    canvas.before:
        Color:
            rgba: self.bcolor
        Rectangle:
            pos: self.pos
            size: self.size

Единственный способ, который работает для меня, это когда я устанавливаю bcolor: в значение rgba. Было бы хорошо, даже если бы я мог определить цвет как rgba, но сделать это один раз в верхней части, как показано ниже:

#:import hex kivy.utils.get_color_from_hex

#:set gray_dark (0.752, 0.745, 0.745, 1)

<Label@Label>
    background_normal: ''        
    bcolor: gray_dark
    canvas.before:
        Color:
            rgba: self.bcolor
        Rectangle:
            pos: self.pos
            size: self.size

Оба кода выдают ошибку:

TypeError: 'NoneType' object is not iterable

Что совершенно очевидно, поскольку hex - это не список.

1 Ответ

0 голосов
/ 13 апреля 2019

Root Cause

Произошла следующая ошибка, поскольку при запуске приложения атрибут bcolor имеет значение None.

TypeError: 'NoneType'объект не повторяется

Решение

Добавление оператора if...else для проверки значения None.

Фрагменты

    canvas.before:
        Color:
            rgba: (0, 0, 0, 1)  if self.bcolor is None else self.bcolor

Примечание

Следующий пример иллюстрирует присвоение hex() непосредственно rgba.

canvas.before:
    Color:
        rgba: hex('#c2c2c2')
    Rectangle:
        pos: self.pos
        size: self.size

Пример

main1.py

from kivy.base import runTouchApp
from kivy.lang import Builder

runTouchApp(Builder.load_string("""
#:import hex kivy.utils.get_color_from_hex
#:import sp kivy.metrics.sp

#:set gray_dark hex('#c2c2c2')

<Label@Label>
    background_normal: ''
    bcolor: gray_dark
    color: (0, 0, 0, 1)
    text: "set gray_dark hex('#c2c2c2')"
    font_size: sp(30)
    canvas.before:
        Color:
            rgba: (0, 0, 0, 1)  if self.bcolor is None else self.bcolor
        Rectangle:
            pos: self.pos
            size: self.size

Label:

"""))

Output

Example 1 Example 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...