Python ncurses、CDK、urwid 的区别

Posted

技术标签:

【中文标题】Python ncurses、CDK、urwid 的区别【英文标题】:Python ncurses, CDK, urwid difference 【发布时间】:2012-01-11 01:19:01 【问题描述】:

这三个有什么区别?据我了解,它们都提供对 curses 的绑定,这是基于终端文本的 UI 的 C 库。

我目前对这 3 个中的任何一个都不了解,也从未使用过诅咒。你会推荐哪一个?我多次听说过 ncurses,但只有一两次关于 CDK(通过研究),从未听说过 urwid(我认为)。

【问题讨论】:

【参考方案1】:

看了一些参考资料后我得到的是:

ncurses:是curses的免费软件版本,所以你必须处理各种底层细节。 pyCDK:它是一个提供一些小部件的更高级别的库。这个我没用过,但是根据sourceforge项目页面,它已经很久没有维护了(至少是python绑定),所以我不会用这个。 urwid:我用过这个,我不得不说它仍然有点低级(它更像是一个框架而不是一个小部件库),但仍然非常有用并且比 curses 更友好。作为一个 UI 框架,它拥有你通常期望的所有东西,比如小部件、事件和控制小部件布局的方法。我想说的一些事情对curses 来说很难,但对urwid 来说很简单:在调整终端大小时重绘小部件并收集鼠标输入(例如单击按钮)。

所以我的建议是使用urwid,如果它不能满足您的需求,请寻找其他替代方案。

【讨论】:

此外,Urwid 可以优雅地处理 Unicode 输入,而许多其他控制台 API 却没有。 我使用了几个小部件工具包,如 C++ Qt4、Java Swing/AWT、C# .Net、python tk...所有这些都有一个共同点:小部件库、容器保存其他小部件、布局、事件循环/异步机制。包含curses 的python 没有我所谓的我想要/需要的基础知识(小部件库、容器、布局、事件循环机制)。 |||另一方面,urwid 确实具有基础知识(小部件库、布局、事件循环机制)。并且有非常好的示例、教程、文档,以便您快速上手。【参考方案2】:

我没有使用任何库,但我假设您指的是:

Python 内置的curses 模块 pycdk,CDK 的 Python 接口 urwid 控制台 UI 库

它们只是具有相同目标的不同库:为基于控制台的 UI 提供 API。从previous question 看来,curses 需要更多的低级样板。需要注意的一点是 Python 的 curses 模块仅在 Unix 下可用;如果您使用的是 Windows,则可能需要查看 Fredrik Lundh 编写的 Console 模块。

其他两个选择似乎也很有希望,尽管urwid 在开发过程中看起来更有条理,并且仍在积极开发中。

【讨论】:

以上是关于Python ncurses、CDK、urwid 的区别的主要内容,如果未能解决你的问题,请参考以下文章

在 NCurses CDK 矩阵中,单个单元格可以着色吗?

使用 NCurses CDK 矩阵时,是不是可以在调用 activateCDKMatrix 后更新矩阵?

如何将urwid.BigText放入urwid.ListBox

Python 控制台 UI 建议

如何使用 CDK Python 创建包含多个语句的 IAM PolicyDocument?

如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?