首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将urwid.BigText放入urwid.ListBox

如何将urwid.BigText放入urwid.ListBox
EN

Stack Overflow用户
提问于 2017-12-22 08:49:40
回答 1查看 738关注 0票数 3

在尝试将BigText放在ListBox的顶部时,我一直收到错误的AttributeError: 'BigText' object has no attribute 'rows'。我知道BigText是一个“固定”的小部件,而ListBox需要一个“流”小部件,但我似乎无法让我的程序接受BigText。下面是我尝试过的一个详尽的例子:

代码语言:javascript
复制
head_title = urwid.BigText(('banner', u'Header'), urwid.HalfBlock5x4Font())
head = urwid.Filler(head_title)
# head = urwid.AttrMap(head, 'banner')
# head = urwid.AttrMap(head, 'streak')
head = urwid.BoxAdapter(head, 3)
print head
# this gives me `<BoxAdapter flow widget <Filler box widget <BigText fixed widget>> height=3>`


body = [head, urwid.Divider()]
return urwid.ListBox(body)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 01:30:41

BigText是一个“固定”大小的。这意味着小部件的宽度和高度都是由小部件定义的。ListBox只接受'flow‘大小的部件。这意味着宽度将由容器(在本例中为ListBox)决定。因此,你必须首先将“固定”的部件转换为“流”部件。这可以通过将宽度属性设置为“Padding”来使用剪辑装饰小部件完成。

有关完整的示例,请参阅此处:

代码语言:javascript
复制
import urwid
def show_or_exit(key):
    if key in ('q', 'Q'):
        raise urwid.ExitMainLoop()
    return key

head = urwid.ListBox(urwid.SimpleFocusListWalker([
    urwid.Padding(
        urwid.BigText(('banner', "Hello world"), urwid.HalfBlock5x4Font()),
        width='clip')
]))

loop = urwid.MainLoop(head, unhandled_input=show_or_exit)
loop.run()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47934613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档