如何在urwid上更新列小部件

时间:2018-12-05 11:15:20

标签: python 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()”来更改Text小部件,但这并不是我要替换为其他小部件的目的。

我开始认为这显然不是应该采取的方法,但是却找不到任何东西。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

您非常接近! :)

在更新contents列表时,您需要提供一个包含小部件和选项对象(可以使用options()方法构造的元组)的元组,例如:

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

请参见the docs for Columns.contents