1
我在看urwid來開發一個控制檯應用程序。作爲一個起點,我正在尋找一個列表框的簡單示例,該列表框顯示可以使用上/下鍵滾動的幾行。蟒蛇 - urwid簡單的列表框的例子
任何人都可以提供一個簡單的例子,說明如何做到這一點或指向我的鏈接?我在urwid網站上看到了這些例子,但我正在尋找更基本的東西。
編輯
@Adam:我發現這個例子在線。我對註釋部分有困難,因爲我不熟悉API,我是一名Python新手。
編輯2 我想出來並更新了示例。 還有一個問題 - 我可以直接從列表框中獲取項目數量嗎?
import urwid
palette = [('header', 'white', 'black'),
('reveal focus', 'black', 'dark cyan', 'standout')]
items = [urwid.Text("foo"),
urwid.Text("bar"),
urwid.Text("baz")]
content = urwid.SimpleListWalker([
urwid.AttrMap(w, None, 'reveal focus') for w in items])
listbox = urwid.ListBox(content)
show_key = urwid.Text("Press any key", wrap='clip')
head = urwid.AttrMap(show_key, 'header')
top = urwid.Frame(listbox, head)
def show_all_input(input, raw):
show_key.set_text("Pressed: " + " ".join([
unicode(i) for i in input]))
return input
def exit_on_cr(input):
if input in ('q', 'Q'):
raise urwid.ExitMainLoop()
elif input == 'up':
focus_widget, idx = listbox.get_focus()
if idx > 0:
idx = idx-1
listbox.set_focus(idx)
elif input == 'down':
focus_widget, idx = listbox.get_focus()
idx = idx+1
listbox.set_focus(idx)
def out(s):
show_key.set_text(str(s))
loop = urwid.MainLoop(top, palette,
input_filter=show_all_input, unhandled_input=exit_on_cr)
loop.run()
你能指出您有什麼麻煩? –