[Aporte][Python3] pyconio - Interactuar con la consola de forma fácil!

Iniciado por konn, Noviembre 03, 2018, 01:27:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

PyConio (Python console I/O) es un módulo que provee funciones útiles para trabajar con la I/O de la consola.

Todas las funciones de PyConio tienen el similar comportamiento que conio.h.

Y lo mejor es que es Cross Platform. (osea que funciona en todas las plataformas)
Este módulo esta bajo la licencia GNU GPL v2.


Instalación
Simplemente ejecuta esto:
Código: bash
pip3 install pyconio

en modo administrador o sudo, dependiendo de tu sistema operativo.

Funciones
Colorear texto (paleta de 4 Bits, 16 colores):



Código: python

from pyconio import *
textcolor(Red)
print("El texto esta en rojo!")
textbackground(Green) # Color de texto se mantiene
print("Esto es un texto con fondo verde!")

textcolor(Red)
textbackground(Green)
print("spam")
reversevideo()
# Ahora el color de texto es verde y fondo es rojo
normvideo()
# Reinicia la consola a sus configuraciones por defecto


Lista de colores de la paleta de 4 Bits:
Black, Blue, Green, Red, Yellow, Cyan, Magenta, White, Gray, LightRed, LightGreen, LightBlue, LightWhite, LightYellow, LightCyan y LightMagenta.

Coloreando texto (paleta extendida de 8 Bits, 256 colores)
Código: python


from pyconio import *

textcolor(69, 8)
print("Here")
textcolor(34, 8)
print("using")
textcolor(208, 8)
print("the")
textcolor(196, 8)
print("256")
textcolor(226, 8)
print("color")
textcolor(87, 8)
print("palette!")
   


Puedes encontrar más info You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Coloreando texto (24 Bits paleta True RGB, 16,777,216 colores)
Código: python

from pyconio import *
import colorsys as clsy
   
for i in range(256):
    color = clsy.hsv_to_rgb(i / 255, 1, 1)
    color = int(color[0] * 255), int(color[1] * 255), int(color[2] * 255)
    rgb_backgroundcolor(color[0], color[1], color[2]) # R, G, B

print()
pause()


La paleta de 8 Bits y RGB sólo están disponibles para sistemas POSIX (GNU/Linux, GNU Hurd, MacOSX, Android, etc) y sólo para Windows 10 TH2 en adelante.
Nota: Cuando el programa termina, se reinicia los colores automátcamente

Controlando la posición del cursor:
Código: python

from pyconio import *
gotoxy(5, 5)
print("El cursor está ahora en x:5 and y:5")



Leer teclado:
Código: python

from pyconio import *
c = getch()
print("Presionaste: %s" % c)

getch():
Lee una tecla del teclado sin esperar que el usuario presione enter y retorna la tecla.
getche():
Al igual que getch(), pero imprime la tecla presionada.
getchar():
Lee una letra del teclado, pero espera hasta que el usuario presione enter.
kbhit():
Detecta si una tecla ha sido presionada.


Colocando título a la consola:
Código: python

from pyconio import *
title("eggs")


Pausar la ejecución del programa:
Código: python

from pyconio import *
pause()
pause("Programa pausado ")



Escondiendo y mostrado el cursor:
Código: python

from pyconio import *
hidecur() # El cursor está oculto
showcur() # Ahora el cursor no lo está


Limpiar la pantalla:
Código: python

from pyconio import *
clrscr()


Obtener el tamaño de la consola:
Código: python

from pyconio import *
a = gettermsz()

Retorna: tupla con tamaño X & Y de la consola.

Ejemplos
Un (muy) simple juego hecho usando PyConio.

PD: el código de este "juego" está en la misma repo (pyconio/demo/Walk.py), y viene incluido con el módulo.
Si quieren pueden enviarme por MP lo que hagan con este módulo, y lo pondré aquí.

Compatibilidad
Este módulo ha sido probado en Windows (10), en GNU/Linux (Ubuntu, Debian y Ubuntu WSL) y en Android usando Pydroid 3.



Cualquier problema o sugerencia, comuníquenla atravez de un MP.
La repo está You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, en caso de que quieran contribuir, o si tienen un problema, aunque preferiblemente si el problema será escrito en español, mejor escríbanme un MP como dije anteriormente.
Espero que mi aporte les sea útil.
Saludos! :)