今天笔者带大家,梳理几个常见的基于文本终端的 UI 框架,一睹为快!
Curses
首先出场的是 Curses[1]。
Curse
Curses 是一个能提供基于文本终端窗口功能的动态库,它可以:
-
使用整个屏幕
-
创建和管理一个窗口
-
使用 8 种不同的彩色
-
为程序提供鼠标支持
-
使用键盘上的功能键
Curses 可以在任何遵循 ANSI/POSIX 标准的 Unix/Linux 系统上运行。Windows 上也可以运行,不过需要额外安装 windows-curses
库:
pip install windows-curses
上面图片,就是一哥们用 Curses 写的 俄罗斯方块游戏[2],是不感觉满满的回忆吧,可以拿去复活古董机了。
我们也来试试牛刀:
import curses
myscreen = curses.initscrmyscreen.border(0)
myscreen.addstr(12, 25, "Python curses in action!")
myscreen.refreshmyscreen.getchcurses.endwin
-
需要注意
addstr
前两个参数是字符坐标,不是像素坐标 -
getch
会阻塞程序,直到等待键盘输入 -
curses.endwin
作用是退出窗口 -
如果需要持续监听用户的交互,需要写个循环,并对
getch
获得的输入进行判断
代码运行效果如下:
小试牛刀
Curses 非常轻巧,特别适合处理一下简单交互,代替复杂参数输入的程序,既优雅,有简单,而且 Curses 也是其他文字终端 UI 的基础。
Npyscreen
Npyscreen[3] 也是一个用了编写文本终端的 Python 组件库,是基于 Curses 构建的应用框架。
比起 Curses,Npyscreen 更接近 UI 式编程,通过组件的组合完成 UI 展示和交互