我正在阅读一个 yml 表单文件并将其内容作为 urwid 中的列获取。我必须在控制台上显示这些列。如果我使用普通的列表框和 listwalker,那么我可以让列显示在屏幕上。但是,我需要将一些列分组为一个块并将其显示在一个 linebox 小部件中。我该怎么做?
我的每个列小部件都有两列,第一列是文本小部件,第二列是编辑小部件。这是我尝试过的:
尝试通过附加到名为 blockPile 的堆(声明为 blockPile = urwid.Pile([ ]) )来创建一堆列,如下所示:
blockPile.contents.append(columnEntry, options='pack')
但收到此错误
TypeError: append() got an unexpected keyword argument 'options'
然后删除了选项并使用了这个:
blockPile.contents.append(columnEntry)
但出现以下错误
urwid.container.PileError: added content invalid: <Columns selectable box/flow widget>
接下来我使用了列表框
blockContent = urwid.SimpleListWalker([])
blockListbox = urwid.ListBox(blockContent)并使用 append 将我的列放入 listBox
blockContent.append(columnEntry)
最后将列表框放在盒子适配器中
box = urwid.BoxAdapter(blockContent, height = 20)
然后在一个 linebox 中返回它
return urwid.LineBox(box, title='|** Block **|')
但现在我收到以下错误
AttributeError: 'SimpleListWalker' object has no attribute 'selectable'
如果我只使用一个列表框和一个 listwalker 并且不将列表框放在其他任何东西中,那么一切正常。但我希望将列的列表框放在一个行框中。我该怎么做?