【发布时间】:2013-07-29 12:28:29
【问题描述】:
我是使用 Urwid 库(内置 Python)的新手,我正在尝试了解 urwid examples 上的一些现有 urwid 示例。其中之一就是这段代码:
import urwid
palette = [
('banner', 'black', 'light gray', 'standout,underline'),
('streak', 'black', 'dark red', 'standout'),
('bg', 'black', 'dark blue'),]
txt = urwid.Text(('banner', u" Hello World "), align='center')
map1 = urwid.AttrMap(txt, 'streak')
fill = urwid.Filler(map1)
map2 = urwid.AttrMap(fill, 'bg')
def exit_on_q(input):
if input in ('q', 'Q'):
raise urwid.ExitMainLoop()
loop = urwid.MainLoop(map2, palette, unhandled_input=exit_on_q)
loop.run()
- 这些属性在这个例子中是如何工作的?
- 前景和背景是什么意思?
- map1 "wraps" txt 是什么意思?这是否意味着您创建了一个名为 map1 的小部件并将该小部件放置在放置 txt 的屏幕位置上?短语“用另一个小部件 B 包装一个小部件 A”是否与我们所说的“将小部件 A 映射到小部件 B”的意思相同?
- map1 是 Filler 装饰小部件的 original_widget 吗?
- 哪些代码部分匹配 streak 的垂直高度与 txt 的垂直高度完全匹配?为什么 streak 的垂直高度没有变得大于或小于 txt 的垂直高度?如果没有 map2,那是否意味着除了 txt1 之外的屏幕其余部分都是红色的还是只有黑色的?
【问题讨论】:
-
那些标记为不清楚的人是否曾经使用过 Urwid 库?
-
几年后刚来到这里,带着确切的问题。非常感谢,伙计们!真的做得很好
标签: python python-2.7 console-application tui urwid