在Python中使用哪个控制台库?

时间:2012-03-02 05:32:45

标签: python windows linux

我在python中完成的任务非常简单。需要在屏幕上绘制文本数据(Unicode)作为行,可导航,用户可以选择/取消选择行。但是,这应该适用于无头Linux,以及Windows或Mac OS。 Curses没有Windows端口。 Fredrik Lundh的控制台模块仅适用于Windows。我可以使用这两个库并检查操作系统,但是需要花费两倍的精力才能在两个不同的库上创建/维护相同的功能。

我正在寻找简单的多平台控制台库来绘制我所描述的内容。

3 个答案:

答案 0 :(得分:1)

在较低级别,您将不得不使用curses,并且Windows上的基础curses库有多种选择可能有效,也可能无效。你不会在UNIX上遇到任何关于curses的真正问题,所以如果我是你,我会先让它在Windows上工作,如果某个特定的功能无法正常运行,请编程。 UNIX端口应该是无痛的。

适用于Windows的PDCurses可用作DLL或源代码,可以使用ctypes模块直接连接到任何DLL。有一个工具可以为你自动生成ctypes包装器,称为ctypesgen.py http://wavetossed.blogspot.com/2011/07/asynchronous-gnu-readline.html我不确定它是否适用于Windows DLL非常自动,但它确实可以从头文件中工作,所以值得一试尝试。

有关ctypes的更多背景知识,请查看此处的一些问题,例如Scheduling function calls in a Python curses UI

答案 1 :(得分:0)

我最近有一个类似的问题,我正在整理一个包(https://github.com/peterbrittain/asciimatics)。我对安装(或更糟)构建PDCurses或cygwin等单独的二进制可执行文件的解决方案不太满意,因此我创建了一个统一的API,为Windows和UNIX平台提供控制台颜色,光标定位和键盘输入。

有一个示例应用程序库here。在最近的版本中,我还添加了一组窗口小部件对象,以允许您创建如下的TUI:

enter image description here

现已上线,已在CentOS 6/7和Windows 7/8上测试过。您可以使用pip从PYPI安装它,然后使用Screen类完全按照您的意愿执行操作。如果没有,请在GitHub上发布增强请求,我会看到我能做什么。

答案 2 :(得分:0)

我使用urwid。它的文档很差,但另一方面,它的源代码库非常紧凑。它支持Unicode,并且在Cygwin上运行良好。似乎没有在本机CMD.exe中工作,但值得仔细研究,看看curses依赖是如何只是可选的。

项目网站的例子:

http://urwid.org/_images/graph2.png

http://urwid.org/_images/highcolors1.png