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 矩阵时,是不是可以在调用 activateCDKMatrix 后更新矩阵?
如何将urwid.BigText放入urwid.ListBox