Изменение цвета ячейки и определение размера содержимого - PullRequest
0 голосов
/ 15 мая 2019

В следующем ответе https://stackoverflow.com/a/56140831/9440453 как я могу изменить цвет ячейки на основе значений в ней, а также как я могу подогнать содержимое ячейки или изменить ее размер в зависимости от размера контента.

Подробности Для цвета: Если ячейка содержит kyle, цвет должен быть red, а если он содержит raul, то должно быть blue и т. Д.

Какиесвойство, которое мы должны отредактировать, чтобы сделать эту работу.

1 Ответ

0 голосов
/ 15 мая 2019

Вопрос 3 - цвет текста

как я могу изменить цвет текста?

Решение 3 - Цвет метки

Использование color дляизменить цвет текста

Примечание

Кнопка представляет собой Метка со связанными действиями, которые запускаются при нажатии кнопки (иливыпущен после нажатия / касания).Для настройки кнопки используются те же свойства (padding, font_size и т. Д.) И система определения размеров, что и для класса Label.

Kivy Label »color

color

Цвет текста в формате (r, g, b, a).

Цвет: ListProperty и по умолчанию [1, 1, 1, 1].

Snippets

def apply_selection(self, rv, index, is_selected):
    ''' Respond to the selection of items in the view. '''

    self.selected = is_selected

    if rv.data[index]['text'].lower() == 'kyle':
        self.color = [0, 1, 0, 1]  # green colour text
        ...
    elif rv.data[index]['text'].lower() == 'raul':
        self.color = [0, 1, 1, 1]  # aqua colour text
        ...
    else:
        self.color = [1, 1, 1, 1]  # default white colour text
        ...

Вопрос 1 - изменить размер ячейки в зависимости от содержимого

как мне вписать содержимое в ячейку или изменить размерячейка в зависимости от размера содержимого.

Решение 1 - Метка texture_size

Чтобы задать размер текстового содержимого, свяжите size с texture_size для увеличения с текстом.

Kivy Label »texture_size

texture_size

Размер текстуры текста.Размер определяется размером шрифта и текста.Если text_size имеет значение [Нет, Нет], текстура будет соответствовать размеру текста, в противном случае она будет обрезана, чтобы соответствовать text_size .

Когда text_size - это [Нет, Нет], можно привязать к texture_size и пропорционально изменить его размер, чтобы он соответствовал размеру метки, чтобы текст максимально поместился в метке.

Предупреждение

texture_size устанавливается после свойства texture .Если вы прослушиваете изменения texture , то texture_size не будет соответствовать вашему обратному вызову.Вместо этого привяжите к texture_size.

Фрагменты

<Label>:
    size: self.texture_size

<TextInputPopup>:
    title: "Popup"

Вопрос 2 - цвет ячейки в соответствии с данными

Как мне изменить цвет ячейки на основена значения в нем

Решение 2

Решение требует изменений в скрипте Python.

Py file

  • Проверить наличиенапример, kyle или raul в методе apply_selection(self, rv, index, is_selected) и установите rgba на красный или синий соответственно.
  • Измените цвет с помощью атрибутов Button, background_colorи background_normal вместе.

Кнопка Kivy »background_color

background_color

Цвет фона в формате (r, g, b,а).

Действует как множитель для цвета текстуры.Текстура по умолчанию - серый, поэтому просто установка цвета фона даст более темный результат.Чтобы установить простой цвет, установите background_normal на ''.

Цвет фона: ListProperty и по умолчанию [1, 1, 1, 1].

Кнопка Kivy »background_normal

background_normal

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

background_normal является StringProperty и по умолчанию имеет значение 'atlas: //data/images/defaulttheme/button'.

Snippets

def apply_selection(self, rv, index, is_selected):
    ''' Respond to the selection of items in the view. '''

    self.selected = is_selected

    if rv.data[index]['text'].lower() == 'kyle':
        self.background_color = [1, 0, 0, 1]    # red background colour
        self.background_normal = ''
    elif rv.data[index]['text'].lower() == 'raul':
        self.background_color = [0, 0, 1, 1]    # blue background colour
        self.background_normal = ''
    else:
        self.background_color = [1, 1, 1, 1]    # default colour
        self.background_normal = 'atlas://data/images/defaulttheme/button'    # default

Выход

Result

...