我正在Linux中使用带有TUI的python(不是GUI,这只是la脚)在Linux中编写一个小型数独游戏/求解器,只是为了好玩。我的问题是,哪个库更好(我的意思是更容易处理,更好的支持,更直接和易于理解),选择是诅咒或urwid或者如果有人有更好的建议,为什么?我有一些 Tkinter 和 wxPython 经验。
任何帮助或信息将不胜感激。
您可能想查看Unicurses,它在 UNIX 系统中包装了 python 核心 curses 模块,并在基于 Windows 的机器上包装了免费的 pdcurses 库。
该库旨在模拟原始 ncurses 库的语法和样式,因此,如果您对使用 curses 样式编程学习 TUI 设计感兴趣,请查看它。
从我读过的少量文档来看,Urwid是一个非常有趣的库,它使用事件循环(反应器模式)作为应用程序设计的基础,很像 tkinter 或 Twisted。此外,urwid 有一个专门设计用于 Twisted 的事件循环类,因此如果您的目标是创建用于网络的 TUI,那么它是一个不错的选择。Twisted 也使用反应器模式,所以如果你想学习这种风格,我会推荐它。
最后,如果您确实使用 ncurses 风格的库,请查看Dan Gookin 关于 ncurses 的书。一个非常好的资源,我所知道的唯一一个今天在印刷。
还有其他选项,例如newt、pygcurses等,但这应该可以帮助您入门。祝你好运,今天的 TUI 编程是一种难以攻破的技术迷恋,但它是有益的。
虽然以上对于 Linux 来说是一个完全合理的解决方案,但 OP 要求其他建议和理由。
谁愿意在像 Python 这样的现代 OO 语言中使用像 curses 这样的低级 API?更不用说如果你被困在 Windows 中(OP 不是,但对很多人来说是个问题)......必须有更好的方法。
为了尝试解决这个问题,我整理了一个简单的跨平台类(是的 - Windows 包含在内,而不会退回到 PDcurses)来完成大多数人想要从他们的终端/控制台完成的所有事情。如果您使用的是 Linux,这是一种更人性化的 curses 编程方式。如果您在 Windows 上,则相同的类可以正常工作,没有外部二进制依赖项。您可以在asciimatics中找到 Screen 类。
此外,我还创建了大量更高级别的对象来创建动画和 TUI。例如,这是一个使用 TUI 小部件的示例记录:
如果您需要额外的功能,请告诉我,我会看看我能做些什么。