9

我正在Linux中使用带有TUI的python(不是GUI,这只是la脚)在Linux中编写一个小型数独游戏/求解器,只是为了好玩。我的问题是,哪个库更好(我的意思是更容易处理,更好的支持,更直接和易于理解),选择是诅咒urwid或者如果有人有更好的建议,为什么?我有一些 Tkinter 和 wxPython 经验。

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

4

3 回答 3

10

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

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

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

最后,如果您确实使用 ncurses 风格的库,请查看Dan Gookin 关于 ncurses 的书。一个非常好的资源,我所知道的唯一一个今天在印刷。

还有其他选项,例如newtpygcurses等,但这应该可以帮助您入门。祝你好运,今天的 TUI 编程是一种难以攻破的技术迷恋,但它是有益的。

于 2012-05-10T14:11:27.380 回答
9

虽然以上对于 Linux 来说是一个完全合理的解决方案,但 OP 要求其他建议和理由。

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

为了尝试解决这个问题,我整理了一个简单的跨平台类(是的 - Windows 包含在内,而不会退回到 PDcurses)来完成大多数人想要从他们的终端/控制台完成的所有事情。如果您使用的是 Linux,这是一种更人性化的 curses 编程方式。如果您在 Windows 上,则相同的类可以正常工作,没有外部二进制依赖项。您可以在asciimatics中找到 Screen 类。

此外,我还创建了大量更高级别的对象来创建动画和 TUI。例如,这是一个使用 TUI 小部件的示例记录:

文本 UI 小部件

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

于 2015-06-14T22:39:53.313 回答
1

如果您的游戏将在控制台中运行,那么只需选择curses

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

于 2012-05-08T22:26:09.693 回答