Python TUI libs

10

我正在使用Python和TUI(不是GUI,那只是无聊)在Linux上编写一个小数独游戏/求解器,只是为了好玩。我的问题是,哪种库更好(我指更容易处理、更好的支持、更直观易懂),选择包括cursesurwid,如果有更好的建议,请提出,并说明原因。我有一些Tkinter和wxPython的经验。

任何帮助或信息都将不胜感激。

3个回答

11
你可以看看 Unicurses,它在UNIX系统上包装了Python核心curses模块, 在基于Windows的机器上使用免费的pdcurses库。

该库旨在模拟原始ncurses库的语法和样式。如果你有兴趣学习使用curses风格编程设计TUI,则可以试试。

Urwid是一个非常有趣的库,从我阅读的少量文档来看,它使用事件循环(反应器模式)作为应用程序设计的基础,类似于Tkinter或Twisted。此外,urwid还具有专门为与Twisted一起使用而设计的事件循环类,因此如果您的目标是为网络创建TUI,则它是一个不错的选择。Twisted也使用反应器模式,因此如果您想学习那种风格,我建议选用它。

最后,如果您选择ncurses风格库,请查看Dan Gookin的ncurses书。这是一个非常好的资源,也是我知道的唯一一本今天还在印刷的书。

还有其他选择,例如newtpygcurses等,但这应该足以让您入门。祝你好运!现在编写TUI程序是一种技术嗜好,可能不容易入手,但会带来收获。


由于我不喜欢Windows,所以Unicurses可能是不必要的。Newt看起来不错,但它的名字让我想起了共和党提名的噩梦...我在pygcurse网站上看到了一些TUI游戏的例子,那更符合我的目的。非常感谢。 - lllluuukke
1
如果你希望使用curses进入游戏开发,那么也可以看看libtcod,这是一个非常强大的TUI库,适用于roguelikes等游戏。在Python中,它几乎是非网络roguelike开发的首选库,而且相对容易使用。 - Chazu

10

虽然上面的方案对于 Linux 来说是完全合理的解决方案,但提问者要求其他建议和相应的理由。

谁想在像 Python 这样的现代面向对象语言中使用底层 API ,如 curses?更不用说如果你被困在 Windows 中(这并不适用于提问者,但却是许多人存在的问题)……肯定有更好的方法。

为了解决这个问题,我编写了一个简单的跨平台类,可以完成大多数人所需要的终端/控制台功能(是的,Windows 也包括在内,而且不需要回退到 PDcurses)。如果您正在使用 Linux,则这是一种更加人性化的编程 curses 的方式。如果您正在使用 Windows,则同样的类可以直接使用,无需外部二进制依赖项。您可以在 asciimatics 中找到 Screen 类。

此外,我还创建了许多高级对象来创建动画和 TUI 界面。例如,这是使用 TUI 按钮的示例录制:

Text UI widgets

如果您需要额外的功能,请告诉我,我会尽力而为。


这个库太棒了!谢谢分享!<3 - Elias Dorneles

2
如果你的游戏将在控制台中运行,那么只需选择curses
如果你的游戏将作为GUI应用程序运行,则只需选择PySide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接