Как обновить виджет Столбцы на urwid

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

Я попробовал следующий код, но я получаю сообщение об ошибке

urwid.container.ColumnsError: added content invalid <Filler box widget <Text flow widget 'other test'>>

Я просто хочу иметь возможность заменить

from urwid import *

cols = Columns([Filler(Text('test')), Filler(Text('test'))])
loop = MainLoop(cols)

cols.contents[0] = Filler(Text('other test'))
# also tried .append just for trying, same result

loop.run()

Я знаю, что могу изменить виджет "Текст" с помощью ".set_text()", но это не то, что я пытаюсь сделать, я хочу заменить его другим виджетом.

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

заранее спасибо.

1 ответ

Решение

Ты довольно близко!:)

При обновлении contents список, вы должны предоставить кортеж, который содержит как виджет, так и объект параметров (который вы можете создать с помощью options() метод), как:

cols.contents[0] = (Filler(Text('other test')), cols.options())

Смотрите документы дляColumns.contents,

Другие вопросы по тегам