Python ncurses, CDK, urwid difference

s5s picture s5s · Dec 1, 2011 · Viewed 14.4k times · Source

What's the difference between these 3? As far as I understand it they both provide binding to curses which is the C library for terminal text-based UI.

I currently have no knowledge of any of the 3 and I've never used curses. Which one would you recommend? I've heard of ncurses many times but only once or twice about CDK (through research) and never heard of urwid (I think).

Answer

jcollado picture jcollado · Dec 1, 2011

What I get after looking at some references is:

  • ncurses: It's a free software version of curses, so you have to deal with all kind low-level details.
  • pyCDK: It's a higher level library that provides some widgets. I haven't used this one, but according to the sourceforge project page it's been unmaintained for a long time (at least the python binding), so I wouldn't go with this one.
  • urwid: I've used this one and I've to say it's still a little bit low level (it's more a framework than a widget library), but still quite useful and much user-friendlier than curses. As a UI framework it has all the stuff you'd typically expect like widgets, events and a way to control the layout of the widgets. Some things that I'd say are hard with curses, but are easy with urwid are: redraw your widgets when the terminal is resized and gather mouse input (clicking on a button, for example).

So my recommendation would be to use urwid and if it doesn't meet your needs look for other alternatives.