киви многоцветный ListView - PullRequest
0 голосов
/ 02 июля 2018

я хочу определить уникальный цвет для всех элементов в списке

На самом деле я создаю вид списка следующим образом:

from kivy.adapters.listadapter import ListAdapter
from kivy.uix.listview import ListItemButton, ListView

data = ["blue","green","yellow","black","white"]

list_adapter = ListAdapter(data=data,
                           args_converter=args_converter,
                           cls=ListItemButton,
                           selection_mode='single',
                           allow_empty_selection=False)

list_view = ListView(adapter=list_adapter)

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

это возможно? спасибо за аванс за помощь

1 Ответ

0 голосов
/ 02 июля 2018

Вы должны использовать args_converter и передать данные в список словарей:

from kivy.adapters.listadapter import ListAdapter
from kivy.uix.listview import ListItemButton, ListView

data = [{"text": "blue", "color": (0, 0, 1, 1)},
        {"text": "green", "color": (0, 1, 0, 1)}, 
        {"text":"yellow", "color": (1, 1, 0, 1)}, 
        {"text": "black", "color": (0, 0, 0, 1)}, 
        {"text": "white", "color": (1, 1, 1, 1)}]

args_converter = lambda row_index, rec: {'text': rec['text'],
                                         'deselected_color': rec['color'],
                                         'selected_color': rec['color'],
                                         'size_hint_y': None,
                                         'height': 25}

list_adapter = ListAdapter(data=data,
                           args_converter=args_converter,
                           cls=ListItemButton,
                           selection_mode='single',
                           allow_empty_selection=False)

list_view = ListView(adapter=list_adapter)

if __name__ == '__main__':
    from kivy.base import runTouchApp
    runTouchApp(list_view)

enter image description here

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