Python 用 urwid 快速搭建 terminal TUI 交互应用
更多资料:https://www.yuque.com/liuwenkan/python/urwid
本文主要用到了urwid 库, 更多关于TUI库介绍请看:https://www.yuque.com/liuwenkan/python/nff2r2
Hollow world
import urwid
def exit_on_q(key): if key in ('q', 'Q'): raise urwid.ExitMainLoop()
palette = [ ('banner', 'black', 'light gray'), ('streak', 'black', 'dark red'), ('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') loop = urwid.MainLoop(map2, palette, unhandled_input=exit_on_q) loop.run()
|
加上 按钮
Text,Button 等, 在Pile中排序, 然后添加入 Filler, 再丢进loop中
代码地址
def on_exit_clicked(button): raise urwid.ExitMainLoop()
button = urwid.Button(u'Exit')
fill = urwid.Pile([map1, button])
urwid.connect_signal(button, 'click', on_exit_clicked)
|
完全代码:
import urwid
def exit_on_q(key): if key in ('q', 'Q'): raise urwid.ExitMainLoop()
palette = [ ('banner', 'black', 'light gray'), ('streak', 'black', 'dark red'), ('bg', 'black', 'dark blue'),]
button = urwid.Button(u'Exit') def on_exit_clicked(button): raise urwid.ExitMainLoop()
txt = urwid.Text(('banner', u" Hello World "), align='center') map1 = urwid.AttrMap(txt, 'streak') fill = urwid.Pile([map1, button]) fill = urwid.Filler(fill)
urwid.connect_signal(button, 'click', on_exit_clicked) loop = urwid.MainLoop(map2, palette, unhandled_input=exit_on_q) loop.run()
|
其实我挺讨厌这个背景色的 2333
成功加入 退出
干脆添加一个菜单吧~
菜单代码地址