Python ncurses、CDK、urwid 的区别

30 投票
2 回答
17222 浏览
提问于 2025-04-17 07:30

这三者有什么区别呢?根据我的理解,它们都是用来和curses这个C语言库连接的,curses是用来创建基于终端的文本用户界面的。

我现在对这三者都没有了解,也从来没有使用过curses。你会推荐哪一个呢?我听说过ncurses很多次,但只在研究中听说过一两次CDK,urwid我好像从来没听说过。

2 个回答

3

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

  • Python自带的curses模块
  • pycdk,这是一个Python接口,用于访问CDK
  • urwid控制台用户界面库

这些都是不同的库,但目标都是一样的:提供一个用于控制台界面的API。从之前的一个问题来看,curses需要更多底层的代码准备。需要注意的是,Python的curses模块只在Unix系统下可用;如果你使用的是Windows,可能需要看看Fredrik Lundh写的Console模块。

另外两个选择看起来也很不错,虽然urwid在开发方面似乎更有条理,而且仍在积极开发中。

38

根据我查阅的一些资料,以下是我的总结:

  • ncurses:这是一个免费的 curses 软件版本,你需要处理很多底层的细节。
  • pyCDK:这是一个更高级的库,提供了一些小部件。我没有使用过这个,但根据 SourceForge 项目的页面来看,它已经很长时间没有维护了(至少 Python 的部分),所以我不建议使用这个。
  • urwid:我用过这个,得说它还是有点底层(更像是一个框架而不是小部件库),但比 curses 更有用,也更容易上手。作为一个用户界面框架,它有你通常期待的所有东西,比如小部件、事件和控制小部件布局的方法。有些事情在 curses 中比较难,但在 urwid 中就简单多了,比如当终端大小改变时重新绘制小部件,以及获取鼠标输入(比如点击按钮)。

所以我推荐使用 urwid,如果它不能满足你的需求,再去找其他的替代方案。

撰写回答