def mksection(title, width, items):
# Setting class variable 'title = title' below produces "NameError: name
# 'title' is not defined"
title_, width_ = title, width
class Section(urwid.WidgetWrap):
title = title_
width = width_
def __init__(self):
value_widgets = {}
needed_keys = set()
rows = []
label_width = max(len(item.label) for item in items)
for item in items:
label_w = urwid.Text(item.label.rjust(label_width))
value_w = urwid.Text('')
value_widgets[item] = value_w
rows.append(urwid.Columns([('pack', label_w),
('pack', urwid.Text(': ')),
value_w]))
needed_keys.update(item.needed_keys)
self._value_widgets = value_widgets
self.needed_keys = needed_keys
super().__init__(urwid.Pile(rows))
def update(self, torrent):
for item,value_w in self._value_widgets.items():
value_w.set_text(item.human_readable(torrent))
return Section
评论列表
文章目录