而不是像urwid 示例中那样执行此操作:
simple_walker = urwid.SimpleFocusListWalker([
urwid.AttrMap(urwid.Text([u'\n ',caption]), 'heading'),
urwid.AttrMap(line, 'line'),
urwid.Divider()] + choices + [urwid.Divider()])
self.listbox=urwid.ListBox(simple_walker)
我想这样做:
simple_walker = urwid.SimpleFocusListWalker([])
simple_walker.append(urwid.AttrMap(urwid.Text([u'\n ',caption]), 'heading'))
simple_walker.append(urwid.AttrMap(line, 'line'))
simple_walker.append(urwid.Divider())
simple_walker.append(choices)
simple_walker.append(urwid.Divider())
self.listbox=urwid.ListBox(simple_walker)
但是,当我这样做时,我会得到一个很长的异常转储,结尾为:
File ".../listbox.py", line 717, in _set_focus_complete
(maxcol,maxrow), focus)
File ".../listbox.py", line 687, in _set_focus_first_selectable
(maxcol, maxrow), focus=focus)
File ".../listbox.py", line 419, in calculate_visible
n_rows = next.rows( (maxcol,) )
AttributeError:“列表”对象没有属性“行”
将项目附加到 SimpleFocusListWalker 的正确方法是什么。
我正在尝试从上到下构建一个菜单,而不在构造函数中指定整个内容。