2012-05-08 25 views
8

Estoy escribiendo un pequeño juego de sudoku/solver en Linux usando Python con TUI (no GUI, eso es cojo) solo por diversión. Mi pregunta es, ¿qué lib es mejor (me refiero a más fácil de manejar, mejor soporte, más directo y comprensible), las opciones son curses o urwid o si alguien tiene una mejor sugerencia, y por qué? Tengo algunas experiencias Tkinter y wxPython.Python TUI libs

Cualquier ayuda o información será apreciada.

+0

Si aloja su código en algún lugar algún día, háganoslo saber. – ychaouche

Respuesta

9

Es posible que desee comprobar Unicurses, que envuelve el módulo python core curses en sistemas UNIX y envuelve la biblioteca pdcurses gratuita en máquinas basadas en Windows.

Esta biblioteca está diseñada para emular la sintaxis y el estilo de la biblioteca original de ncurses, por lo que si está interesado en aprender el diseño de TUI utilizando la programación de estilo de maldición, entonces pruébelo.

Urwid es, a partir de la poca documentación que he leído, una biblioteca muy interesante que utiliza bucles de eventos (reactor pattern) como base para el diseño de aplicaciones, al igual que tkinter o Twisted. Además, urwid tiene una clase de bucle de eventos específicamente diseñada para Twisted, por lo que si su objetivo es crear TUI para su uso en redes, es una buena opción. Twisted también usa el patrón del reactor, por lo que si desea aprender ese estilo, lo recomendaría.

Por último, si va con una biblioteca de estilo ncurses, consulte Dan Gookin's book on ncurses. Un muy buen recurso, y el único que conozco que está impreso hoy.

Existen otras opciones como newt, pygcurses, etc., pero esto debería comenzar. La mejor de las suertes, la programación de TUI hoy en día es uno de esos fetiches tecnológicos en los que puede ser difícil entrar, pero es gratificante.

+0

Como no me importa windose, las unicurses pueden ser innecesarias. Newt se ve bien, comprar su nombre me recuerda a la pesadilla de nominación del Partido Republicano ... Vi algunos ejemplos de juegos de TUI en el sitio de pygcurse, ese es más de mi propósito. Muchas gracias. – lllluuukke

+1

Bueno, si estás esperando entrar en el juego de desarrollo con maldiciones, también echa un vistazo a [libtcod] (http://doryen.eptalys.net/libtcod/), una poderosa biblioteca de TUI para roguelikes y tal. Es prácticamente la biblioteca de acceso para el desarrollo roguelike no conectado a la red en Python, y es relativamente fácil de usar. – Chazu

+0

Gracias de nuevo por su ayuda. – lllluuukke

1

Si su juego se ejecutará dentro de una consola, simplemente seleccione curses.

Si su juego se ejecutará como una aplicación GUI, simplemente seleccione PySide.

4

Si bien lo anterior es una solución perfectamente razonable para Linux, el OP pidió otras sugerencias y una justificación para ellos.

¿Quién quiere utilizar un API de bajo nivel como las maldiciones en un lenguaje OO moderno como Python? Y mucho menos si estás atrapado en Windows (que el OP no es, pero es un problema para mucha gente) ... Debe haber una mejor manera.

Para tratar de resolver esto, he creado una clase de plataforma cruzada simple (yup - Windows se incluye sin recurrir a PDcurses) para hacer todo lo que la gente quiere de su terminal/consola. Si estás en Linux, esta es una forma más humana de programar maldiciones. Si está en Windows, la misma clase funciona igual que sin dependencias binarias externas. Puede encontrar la clase Screen en https://github.com/peterbrittain/asciimatics.

Además, he creado una carga de objetos de alto nivel para crear animaciones y TUI. Por ejemplo, esta es una grabación de una muestra utilizando los widgets de TUI:

Text UI widgets

Si hay una característica adicional que necesita, que me haga saber y voy a ver qué puedo hacer.

+0

¡Santa mierda, esta biblioteca es increíble! ¡gracias por compartir! <3 – elias

Cuestiones relacionadas