2011-12-01 16 views
24

¿Cuál es la diferencia entre estos 3? Por lo que yo entiendo, ambos proporcionan enlaces a curses, que es la biblioteca C para la interfaz de usuario terminal basada en texto.Python ncurses, CDK, diferencia urwid

Actualmente no tengo conocimiento de ninguno de los 3 y nunca he usado maldiciones. ¿Cuál recomendarías? He oído hablar de ncurses muchas veces, pero solo una o dos veces sobre CDK (a través de la investigación) y nunca he oído hablar de urwid (creo).

Respuesta

25

Lo que obtengo después de ver algunas referencias es:

  • ncurses: Es una versión del paquete curses, lo que tiene que hacer frente a todo tipo detalles de bajo nivel.
  • pyCDK: Es una biblioteca de nivel superior que proporciona algunos widgets. No he usado este, pero de acuerdo con la página del proyecto sourceforge no se ha mantenido durante mucho tiempo (al menos el enlace de python), así que no iría con este.
  • urwid: He usado este y tengo que decir que todavía es un poco bajo nivel (es más un marco que una biblioteca de widgets), pero aún bastante útil y mucho más amigable que las maldiciones. Como marco de interfaz de usuario tiene todas las cosas que normalmente esperarías como widgets, eventos y una forma de controlar el diseño de los widgets. Algunas cosas que diría que son difíciles con curses, pero son fáciles con urwid son: volver a dibujar los widgets cuando se cambie el tamaño del terminal y recopilar la entrada del mouse (haciendo clic en un botón, por ejemplo).

Así que mi recomendación sería usar urwid y si no satisface sus necesidades, busque otras alternativas.

+2

Además, Urwid maneja la entrada de Unicode correctamente, lo que muchas otras API de consola no lo hacen. –

+0

He usado un par de kits de herramientas de widgets como C++ Qt4, Java Swing/AWT, C# .Net, python tk ... todos estos tienen en común: una biblioteca de widgets, contenedores para contener otros widgets, diseños, eventos mecanismo loop/async. El pitón incluido 'curses' no tiene lo que yo llamaría los elementos básicos que quiero/necesito (biblioteca de widgets, contenedores, diseños, mecanismo de ciclo de eventos). ||| 'urwid' por otro lado tiene los conceptos básicos (biblioteca de widgets, diseños, mecanismo de bucle de eventos). Y tiene muy buenos ejemplos, tutoriales, documentación para que pueda comenzar rápidamente. –

3

No he utilizado ninguna de las bibliotecas, pero estoy asumiendo que usted se refiere a:

  • de Python incorporada curses módulo
  • pycdk, una interfaz de Python para CDK
  • la biblioteca de la interfaz de usuario de la consola urwid

Son sólo diferentes bibliotecas con el mismo objetivo: proporcionar una API para una interfaz de usuario basada en consola. Desde un previous question, parece que curses requiere más texto de bajo nivel. Una cosa a tener en cuenta es que el módulo curses de Python solo está disponible en Unix; si está en Windows, puede consultar el módulo Console escrito por Fredrik Lundh.

Ambas opciones también parecen prometedoras, aunque urwid parece más organizado en lo que respecta al desarrollo, y todavía se está desarrollando activamente de alguna manera.