tutorial npyscreen nodelay libreria courses acs_pi python curses

npyscreen - tutorial curses python



Alternativa de maldiciones para ventanas (7)

Aquí se explica cómo instalar a qué ashes999 se vinculó en su respuesta a través de pip:

pip install http://www.lfd.uci.edu/~gohlke/pythonlibs/xugyqnq9/curses-2.2-cp27-none-win32.whl

Esto probablemente debería agregarse a PyPI para facilitar aún más la instalación con pip (para que pueda instalarse por nombre en lugar de por URL).

¿Hay alguna alternativa del módulo curses para que python use en Windows? Miré hacia arriba en la documentación de Python, pero allí se menciona que es para usar en Unix. No estoy muy familiarizado con estos, ¿hay alguna forma de usar el módulo de curses en Windows o hay algún módulo similar especialmente para Windows? [Estoy usando Python 3.3]


El documento oficial propone lo siguiente ( here en la parte inferior del párrafo):

La versión de Windows de Python no incluye el módulo curses . Una versión portada llamada UniCurses está disponible. También puede probar el módulo de consola escrito por Fredrik Lundh, que no utiliza la misma API que curses, pero proporciona salida de texto direccionable por cursor y soporte completo para la entrada de mouse y teclado.


Entonces estás de suerte, tengo miedo. No existe una versión multiplataforma real o puerto de maldiciones / ncurses, existe un puerto de "diálogo" que funciona, pero tiene capacidades limitadas.

Su mejor opción es ejecutar CygWin o MinGW32, ambos son, en "términos flexibles", un emulador de sistema + terminal Linux que tiene muchos de los binarios que necesita. Pueden ejecutar binarios nativos de Linux / Unix dentro de la terminal y acceder a sus archivos del sistema "host" en cualquier momento, por lo que es como aplicarle un parche a Windows con todos sus accesorios del mundo de Linux. Todavía necesitará algunos conocimientos básicos de Linux y cómo funcionan los comandos, pero lo sabrá.

Aquí hay un ejemplo de GUI de Pyglet:

import pyglet from pyglet.gl import * class main (pyglet.window.Window): def __init__ (self): super(main, self).__init__(800, 600, fullscreen = False) self.button_texture = pyglet.image.load(''button.png'') self.button = pyglet.sprite.Sprite(self.button_texture) ## --- If you''d like to play sounds: #self.sound = pyglet.media.load(''music.mp3'') #self.sound.play() self.alive = 1 def on_draw(self): self.render() def on_close(self): self.alive = 0 def on_mouse_press(self, x, y, button, modifiers): if x > self.button.x and x < (self.button.x + self.button_texture.width): if y > self.button.y and y < (self.button.y + self.button_texture.height): self.alive = 0 def on_key_press(self, symbol, modifiers): if symbol == 65307: # [ESC] self.alive = 0 def render(self): self.clear() self.button.draw() self.flip() def run(self): while self.alive == 1: self.render() # -----------> This is key <---------- # This is what replaces pyglet.app.run() # but is required for the GUI to not freeze # event = self.dispatch_events() x = main() x.run()

Aquí está el resultado de ese código:


Esta no es una solución nueva, solo una edición de una anterior.

En caso de que el comando pip genere un error 404, puede intentar descargar el paquete de lfd.uci.edu/~gohlke/pythonlibs/#curses y luego escribir algo así como

pip install C:/..packetPath../curses-2.2-cp35-none-win_amd64.whl


La pregunta original era si hay una alternativa a las maldiciones en Windows.

Una respuesta es usar la API de la consola Win32 . Puede programar esto directamente en Python utilizando el excelente paquete pywin32 si ya está familiarizado con la API de la consola.

Sin embargo, encontré este nivel demasiado bajo para mi proyecto reciente. Tampoco me gustó forzar a mis usuarios a compilar / instalar PDcurses, y además, también encuentro maldiciones de nivel demasiado bajo para un lenguaje OO moderno como Python también.

Por lo tanto, he reunido una API multiplataforma de alto nivel para hacer todo lo que la mayoría de la gente quiere de su terminal / consola. El paquete de asciimatics proporcionará la mayoría de sus necesidades de entrada y salida. 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. Vea a continuación una captura de pantalla de ejemplo:

Hay muchos otros efectos y widgets disponibles que puedes encontrar en la gallery , pero si necesitas una característica adicional, házmelo saber y veré lo que puedo hacer.


Me complace informar que ahora hay una compilación de Windows de Curses disponible como una extensión para Python en Windows, desde lfd.uci.edu/~gohlke/pythonlibs/#curses . (No lo escribí, y no sé quién lo mantiene).

Puede ejecutar el instalador e import curses para ejecutar maldiciones. (Verificado en Windows 7 de 64 bits y Windows 8.)

@ArtOfWarfare señala que puede instalar esto a través de Pip con este comentario:

pip install http://www.lfd.uci.edu/~gohlke/pythonlibs/xugyqnq9/curses-2.2-cp27-none-win32.whl


Puedes probar este. Una vez hice el puerto Win64 para esto (fusionado allí). Sin embargo, necesita escribir su código de Python un poco diferente. Éste redireccionará todas las llamadas curses a la versión nativa de Python en UNIX, pero llamará a PDCURSES.DLL en Windows (descargue la DLL por separado). Es compatible con Unicode por lo que recuerdo:

http://sourceforge.net/projects/pyunicurses/