curses-like library for cross-platform console app

2019-01-17 03:43发布

问题:

I'm looking into developing a console application in python which should be able to run under Windows as well as Linux. For this, I'd really like to use a high-level console library like curses. However, as far as I know, curses is not available on Windows.

What other options do I have? Unfortunately, using cygwin under Windows is not an option...

Thanks for your help!

回答1:

There is a wcurses. I've never tried it but it may meet your needs. It sounds like it doesn't have full curses compatibility, but may be close enough. Also it might not be using the DOS terminal, but opening a GUI window and drawing monospaced text inside.

Other windows text mode options are:

  • The console module;
  • wconio -- based on Borland's C conio library.

I believe both are windows only.



回答2:

PDCurses works on Windows, but I don't know any Python wrapper. I wonder whether the curses module could be implemented on Windows with PDCurses?



回答3:

I don't know why people answer in question comments, but debustad is right, there is a prebuilt curses for Windows:

  • http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses

Note lots of other helpful libraries there too. After doing so, install pip and the (lesser known but excellent) bpython interactive interpreter to try it out immediately:

pip install bpython

I also recommend the Urwid library for something higher-level. Never tried it on Windows, but it should be possible with one of the curses packages.



回答4:

I recently hit this issue for a package I was putting together (https://github.com/peterbrittain/asciimatics). I wasn't very happy with the solutions that required you to install (or worse) build separate binary executables like PDCurses or cygwin, so I created a unified API that provides console colours, cursor positioning and keyboard & mouse input for Windows, OSX and UNIX platforms.

This is now live and has been tested on CentOS 6/7 and Windows 7/8/10 and OSX 10.11. You can install it from PYPI using pip and then use the Screen class to control your console. As you can see from the project gallery, it should provide all your console needs, but if you need some extra features, please post an enhancement request on GitHub and I'll see what I can do.



回答5:

develop two interfaces for your program, a text console ui and a graphical ui. Make the console one work only on linux. Nobody on windows uses text console apps.