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

如何在python中为命令行应用程序构建交互式菜单?,python,command-line-interface,python-click,Python,Command Line Interface,Python Click,我一直在和他一起做一个命令行程序。现在我正在以一种非常文本化的方式实现交互式菜单。例如: 1-option #1 2-option #2 Enter the index of the option you want to select: 但我希望以一种更优雅、更互动的方式来做这件事。例如,我喜欢Yeoman实现菜单的方式。这是正在运行的菜单。 有没有python库让我们构建这样的命令行菜单?我看过curses、cmd等库,但它们似乎给了你一个单独的窗口来管理,看起来有点不和谐。curses

我一直在和他一起做一个命令行程序。现在我正在以一种非常文本化的方式实现交互式菜单。例如:

1-option #1
2-option #2
Enter the index of the option you want to select: 
但我希望以一种更优雅、更互动的方式来做这件事。例如,我喜欢Yeoman实现菜单的方式。这是正在运行的菜单。


有没有python库让我们构建这样的命令行菜单?我看过curses、cmd等库,但它们似乎给了你一个单独的窗口来管理,看起来有点不和谐。

curses
或类似的东西,真的是你想要的

虽然
curses
可以用来弹出带有边框的“窗口”,擦除整个窗口,等等,但它的作用是让您可以控制终端窗口,移动光标,突出显示文本,以及您尝试执行的所有其他操作

一些更高级别的库使事情变得更简单(如
urwid
),确实会推动您实现更具体的外观和感觉,这可能不是您想要的,但是
诅咒
可以轻松地用于您正试图构建的内容


诅咒的唯一真正问题在于它不是无处不在的。几乎所有*nix平台都会有,但Windows不会。但是答案并没有太大的不同,有
curses
-伪造库,或者Windows特定的
conio
库(包括stdlib中的一个有限的库,在
mscvrt
内部)。

有趣的问题,但不幸的是离题了(我想)。这个问题可能更适合。不要在python2上工作。这似乎比应该的更痛苦。我现在不想为不同的平台要求多个不同的库。我想我现在会坚持使用基于文本的菜单。无论如何,谢谢你的回答。:)@tarashish:实际上,您可以在Windows上根据几个
libcurses
端口之一构建Python
curses
模块。您通常不能期望最终用户这样做,但如果您的目标是为Windows构建二进制可执行文件,那么这可能是合理的。作为另一种选择,我相信有一些包装器可以提供类似于
conio
的功能子集,在两种平台上都能工作(无论是包装
诅咒
,还是在*nix上手动执行
termcap
tcsetar
之类的操作),但我没有使用过任何一种包装器。