1

我是 urwid 的新手,我认为我误解了一些东西。我不明白为什么这不起作用。而且我不明白错误消息。

#!/usr/bin/env python3
import urwid

def show_or_exit(key):
    if key in ('q', 'Q'):
        raise urwid.ExitMainLoop()
    txt.set_text(repr(key))

txt = urwid.Text('FooBar')

fil = urwid.Filler(txt, valign='middle', height=('relative', 70))
box = urwid.LineBox(fil)
pad = urwid.Padding(box, align='center', width=('relative', 85))

loop = urwid.MainLoop(pad, unhandled_input=show_or_exit)
loop.run()
4

1 回答 1

4

我也遇到过这样的问题,为了更好地了解正在发生的事情,您可能应该阅读有关小部件大小调整模式的文档部分。基本上,这与小部件渲染工作的方式有关,每个小部件根据其“大小调整模式”而有所不同。这是关于 Urwid 最难理解的事情之一,一旦你了解了它,你就可以更有效率地使用它。:)

这是您提供的代码的工作版本:

#!/usr/bin/env python3
import urwid


def show_or_exit(key):
    if key in ('q', 'Q'):
        raise urwid.ExitMainLoop()
    txt.set_text(repr(key))


txt = urwid.Text('FooBar')
widget = urwid.LineBox(txt)
widget = urwid.Padding(widget, align='center', width=('relative', 85))
widget = urwid.Filler(widget, 'middle')

loop = urwid.MainLoop(widget, unhandled_input=show_or_exit)
loop.run()
于 2018-02-25T01:25:53.483 回答