urwid меняет атрибут отображения

Я создаю конфигуратор, который позволяет пользователям выбирать из набора допустимых значений. Для каждого допустимого значения я создаю выбор (который по сути является MenuButton). Если пользователь выбирает "Выбор", то выбор изменяет значение на заголовок.

Обратите внимание, что выбор с текущим значением имеет атрибут, отличный от других. Я хотел бы перебрать варианты после выбора и изменить атрибуты, чтобы соответствовать новому значению.

Я могу перебрать варианты, передав legal_choices перечислить все варианты (или сделать что-то более умное), но я не знаю, как написать код, который просматривает список виджетов и изменяет их атрибуты.

            for vv in leg_values:
                choice = Choice(vv, self, item)
                if vv == self.get_var(item):
                    choice = urwid.AttrMap(choice,'cur_value')
                legal_choices.append(choice)
            var_item = SubMenu(top,item,legal_choices)

Кто-нибудь знает, как изменить атрибуты на виджете в urwid?

1 ответ

У меня была такая же проблема с кнопками, но спустя 3 года я так и не нашел ответа. Это сработало для меня после экспериментов:

      button = urwid.Button("some label")
urwid.connect_signal(button, 'click', self.item_chosen, task)
# Assigning original AttrMap 
button = urwid.AttrMap(button, None, focus_map='reversed')

# At a later point you can change the AttrMap used like this and the button color will change:
button.attr_map = {None: "active task"}
Другие вопросы по тегам