import urwid

def cols(a, b, c):
    return urwid.Columns([
        (10, urwid.Text(a)),
        (10, urwid.Text(b)),
        urwid.Text(c, wrap='clip')])

legend = cols(u'Thing 1', u'Thing 2', u'Thing 3')

status = urwid.Text(u'Feeling fine')

class Row(urwid.WidgetWrap):
    def __init__(self, a, b, c):
        # wrap in AttrMap to hilight when selected
        super(Row, self).__init__(
            urwid.AttrMap(cols(a, b, c), None, 'reversed'))

    def selectable(self):
        # these widgets want the focus
        return True

    def keypress(self, size, key):
        # handle keys as you will
        return key

rows = [Row(u'item %d' % i, u'%d.99' % i, u'text ' * i) for i in range(60)]

listbox = urwid.ListBox(urwid.SimpleListWalker(rows))
top = urwid.Frame(listbox, header=legend, footer=status)

palette = [
    ('reversed', 'standout', '')
]

urwid.MainLoop(top, palette).run()
