如何在Python中为命令行应用构建交互式菜单?

8 投票
1 回答
6623 浏览
提问于 2025-04-18 16:43

我一直在使用click来制作一个命令行程序。现在我正在以一种非常文本化的方式实现交互式菜单。例如:

1-option #1
2-option #2
Enter the index of the option you want to select: 

但我希望能以更优雅和互动的方式来实现这个功能。例如,我很喜欢Yeoman实现菜单的方式。下面是菜单运行的效果。

enter image description here

有没有什么Python库可以让我们像这样构建命令行菜单?我看过像curses、cmd等库,但它们似乎需要一个单独的窗口来管理,看起来不太像Python的风格。

1 个回答

3

curses,或者类似的东西,确实是你想要的。

虽然 curses 可以用来弹出带边框的“窗口”,清空整个窗口等等,但它最基本的功能是让你控制终端窗口——比如移动光标、突出显示文本,以及你想做的其他事情。

一些更高级的库,比如 urwid,会让事情变得更简单,但它们可能会让你的界面看起来更固定,不一定符合你的需求。不过,curses 完全可以用来实现你想要构建的东西。

curses 唯一真正的问题是它并不是到处都有。几乎所有的 *nix 平台都有它,但 Windows 就没有。不过,解决办法也差不多——有一些可以模拟 curses 的库,或者专门为 Windows 设计的 conio 库(包括一个在标准库中有限的版本,位于 mscvrt 里)。

撰写回答