I've been working with click to make a command line program. Right now I'm implementing interactive menus in a very textual way. for example:
1-option #1
2-option #2
Enter the index of the option you want to select:
But I would love to do this in a more elegant and interactive way. For example, I love the way Yeoman implements its menus. Here is the menu in action.
Is there any python library that let's us build command line menus like this? I have looked at libraries like curses, cmd etc. But they seem to give you a whole separate window to manage and look kind of unpythonic.
curses
, or something like it, really is what you want.While
curses
can be used to pop up "windows" with borders around them, erase the whole window, etc., at its base, what it's about is giving you control over your terminal window—moving a cursor around, highlighting text, all the other things you're trying to do.Some of the higher-level libraries that make things easier (like
urwid
) do push you toward a more specific look & feel that may not be what you're after, butcurses
can easily be used for exactly what you're trying to build.The only real problem with
curses
it's that it's not ubiquitous. Almost all *nix platforms will have it, but Windows won't. But the answer there isn't much different—there arecurses
-faking libraries, or Windows-specificconio
libraries (including a limited one in the stdlib, insidemscvrt
).