在当今图形用户界面(GUI)盛行的时代,你可能不知道,其实命令行也可以很“好看”!通过 Python 的 curses 库,你可以轻松构建交互式、美观的终端用户界面。无论你是想开发一个系统监控工具、文本编辑器,还是简单的菜单导航程序,Python curses库 都是你的不二之选。
curses 是一个用于在终端中创建基于文本的图形用户界面(TUI)的编程库。它最初来自 Unix 系统,而 Python 通过内置的 curses 模块提供了对它的封装。使用 curses,你可以控制光标位置、创建窗口、处理键盘输入,甚至实现颜色和高亮效果。
注意:curses 在 Windows 上默认不可用(除非使用 WSL 或第三方库如 windows-curses)。本教程建议在 Linux 或 macOS 环境下运行。
如果你使用的是 Windows,需要先安装兼容包:
pip install windows-curses Linux 和 macOS 用户无需额外安装,因为 Python 标准库已包含 curses。
让我们从最简单的例子开始。以下代码将在终端中央显示 “Hello, Curses!”:
import cursesdef main(stdscr): # 清屏 stdscr.clear() # 获取屏幕尺寸 height, width = stdscr.getmaxyx() # 构建要显示的文本 text = "Hello, Curses!" x = width // 2 - len(text) // 2 y = height // 2 # 在指定位置添加文本 stdscr.addstr(y, x, text) # 刷新屏幕以显示内容 stdscr.refresh() # 等待用户按键 stdscr.getch()# 启动 curses 应用curses.wrapper(main) 关键点说明:
curses.wrapper(main):安全地初始化和清理 curses 环境。stdscr:标准屏幕对象,代表整个终端窗口。addstr(y, x, text):在 (y, x) 坐标处写入字符串。refresh():将缓冲区内容实际绘制到屏幕上。curses 可以监听键盘事件。下面是一个简单的菜单选择示例:
import cursesdef main(stdscr): curses.curs_set(0) # 隐藏光标 stdscr.clear() choices = ['选项 1', '选项 2', '退出'] current_row = 0 while True: # 显示菜单 for idx, choice in enumerate(choices): if idx == current_row: stdscr.attron(curses.A_REVERSE) stdscr.addstr(idx, 0, choice) stdscr.attroff(curses.A_REVERSE) else: stdscr.addstr(idx, 0, choice) stdscr.refresh() key = stdscr.getch() if key == curses.KEY_UP and current_row > 0: current_row -= 1 elif key == curses.KEY_DOWN and current_row < len(choices) - 1: current_row += 1 elif key == ord('\n'): # 回车键 if current_row == len(choices) - 1: break # 退出程序curses.wrapper(main) 这段代码实现了上下方向键导航和回车确认功能,展示了如何构建交互式命令行GUI。
curses 支持颜色!你需要先初始化配色方案:
if curses.has_colors(): curses.start_color() curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) stdscr.addstr(0, 0, "红色文字", curses.color_pair(1)) 你还可以创建子窗口(subwindow)来组织界面布局,非常适合开发复杂的Python文本界面开发项目。
通过本文,你应该已经掌握了 Python curses库 的基本用法。从显示文本、处理输入,到使用颜色和窗口,curses 为你打开了通往专业级终端用户界面的大门。虽然它不如现代 GUI 框架那样华丽,但在资源受限或需要远程操作的场景中,curses 依然是强大而高效的工具。
赶快动手试试吧!用 Python文本界面开发 技能打造属于你自己的终端应用。
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127259.html