Python TUI库

时间:2012-05-08 21:36:21

标签: python curses tui urwid

我正在Linux中使用python和TUI编写一个小数独游戏/解算器(不是GUI,这只是蹩脚)只是为了好玩。我的问题是,哪个lib更好(我认为更容易处理,更好的支持,更直接和可理解),选择是cursesurwid或者如果有人有更好的建议,为什么?我有一些Tkinter和wxPython经验。

任何帮助或信息都将受到赞赏。

3 个答案:

答案 0 :(得分:9)

您可能需要查看Unicurses,它包装UNIX系统中的python核心curses模块,并在基于Windows的计算机上包装免费的pdcurses库。

此库旨在模拟原始ncurses库的语法和样式,因此如果您对使用curses样式编程学习TUI设计感兴趣,请查看它。

Urwid,从我读过的小文档中,是一个非常有趣的库,它使用事件循环(reactor pattern)作为应用程序设计的基础,就像tkinter或Twisted一样。此外,urwid有一个专门设计用于Twisted的事件循环类,因此如果您的目标是创建TUI以供网络使用,那么它是一个不错的选择。 Twisted也使用reactor模式,所以如果你想学习那个样式,我会推荐它。

最后,如果你选择ncurses风格的图书馆,请查看Dan Gookin's book on ncurses。这是一种非常好的资源,也是我所知道的唯一一种资源。

还有其他选项,例如newtpygcurses等等,但这应该可以让您入门。祝你好运,今天的TUI编程是难以闯入的技术之物之一,但它是有益的。

答案 1 :(得分:5)

虽然上述内容对Linux来说是一个非常合理的解决方案,但OP要求提出其他建议和理由。

谁想在像Python这样的现代OO语言中使用像curses这样的低级API?如果你被困在Windows内部(OP不是,但对很多人来说都是一个问题),更不用说......必须有更好的方法。

为了解决这个问题,我已经整理了一个简单的跨平台类(是 - 包含Windows而不回退到PDcurses)来完成大多数人想要的终端/控制台。如果您使用Linux,这是一种更人性化的编程方式。如果您使用的是Windows,那么同一个类的工作原理就是没有外部二进制依赖项。您可以在https://github.com/peterbrittain/asciimatics中找到Screen类。

此外,我还创建了一组高级对象来创建动画和TUI。例如,这是使用TUI小部件记录样本:

Text UI widgets

如果您需要额外功能,请告诉我,我会看到我能做些什么。

答案 2 :(得分:1)

如果您的游戏将在控制台内运行,则只需选择curses

如果您的游戏将作为GUI应用程序运行,那么只需选择PySide