Python ncurses、CDK、urwid有什么区别?

29

这三个有什么区别?据我所知,它们都提供与curses绑定的功能,而curses是用于终端文本界面的C库。

我目前对这三个都没有了解,也从未使用过curses。你会推荐哪一个?我听说过无数次ncurses,但只在研究中一两次听说过CDK,从未听说过urwid(我想是这样的)。

2个回答

38

根据一些参考资料,我得出的结论如下:

  • ncurses:它是curses的免费软件版本,因此你需要处理各种低级细节。
  • pyCDK:它是一个提供一些小部件的高级库。我没有使用过这个,但根据sourceforge项目页面的描述,它已经长时间未被维护(至少是python的绑定),因此我不会选择这个。
  • urwid:我用过这个库,我必须说它仍然有点底层(它更像一个框架而不是一个小部件库),但仍然非常有用,比curses更加用户友好。作为一个UI框架,它具备所有您通常期望的功能,如小部件、事件和控制小部件布局的方法。在使用curses时可能会很困难的一些事情,在使用urwid时却很容易,如:当终端大小改变时重新绘制小部件和收集鼠标输入(例如点击按钮)。

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


4
此外,Urwid 能够优雅地处理 Unicode 输入,而许多其他控制台 API 则不行。 - Vucar Timnärakrul
1
我使用过几个小部件工具包,如C++ Qt4、Java Swing/AWT、C# .Net、Python tk...所有这些都有一个共同点:小部件库、容器来容纳其他小部件、布局、事件循环/异步机制。Python中包含的curses没有我想要/需要的基础知识(小部件库、容器、布局、事件循环机制)。另一方面,urwid确实具备了这些基础知识(小部件库、布局、事件循环机制),并且有非常好的示例、教程和文档,让您快速上手。 - Trevor Boyd Smith

3

我没有使用过这些库,但我猜你所说的是:

它们只是不同的库,目标相同:为基于控制台的UI提供API。从以前的问题中可以看出,curses需要更多的底层样板。需要注意的一点是,Python的curses模块仅在Unix下可用;如果您在Windows上,则可能需要查看Fredrik Lundh编写的Console模块。

其他两个选择也很有前途,尽管从开发方面来看,urwid似乎更有组织,并且仍在积极开发中。


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