2012-06-19 39 views
9

Nuevo en Python y Stackoverflow, me gustaría un poco de ayuda. Quisiera imprimir en color en Python, y he buscado en Google, pero con poca suerte :(me he sentido confundida cada vez y ninguno ha funcionado. Este es el código que he escrito.¿Cómo imprimir el color/color en python?

answer = input ("Wanna go explore? OPTIONS : Yes or No") 
if answer == "no": 
    print("Awww, come on, don't be like that, lets go!") 
elif answer == "yes": 
    print ("Great! Lets go!") 
else: 
    print("Whats that? I couldn't hear you!") 

Ahora, le gustaría tener OPCIONES de color Verde y Sí de color azul y Sin color rojo. ¿Cómo podría lograr esto?

+0

Su código no se encuentra huella y es sintácticamente válida. Deberías arreglar eso primero. Además, no entiendo tus requisitos. ¿Qué entrada llevaría a qué salida? – phihag

+0

Lo siento. No copié y pegué el código directamente, porque no puedes hacerlo en IDLE, pero funciona bien en IDLE. Ahora, quiero hacer que las opciones sean de color verde, sí, de color azul y sin color rojo. Ahora, soy nuevo en Python y no tengo idea de cómo hacer esto. ¿Alguna idea? Además, me apoligio si no te di la respuesta que te hubiera gustado. Voy a ser sincero, no entiendo muy bien a qué te refieres con 'Qué salida llevaría a qué salida' –

+0

He corregido la sintaxis de tu código. – SomeKittens

Respuesta

4

Echa un vistazo al módulo curses. Esto reemplazará las declaraciones print y le dará un control completo sobre el posicionamiento del texto y los atributos en su pantalla

3

Si solo quiere una manera muy simple y st forma raightforward para imprimir ANSI colores en la terminal se puede comprobar la ansicolor package module:

Instalar a través de pepita

$ pip install ansicolors 

Uso fragmento

from colors import red, green, blue 
print red('This is red') 
print green('This is green') 
print blue('This is blue') 

from colors import color 
for i in range(256): 
    print color('Color #%d' % i, fg=i) 

Nota sobre pip

pip es un administrador de paquetes python. Si todavía no ha instalado pip, puede instalarlo con easy_install pip

si luego encontrar que no tiene easy_install, a continuación, descargar: http://peak.telecommunity.com/dist/ez_setup.py y hacer:

python ez_setup.py 
easy_install pip 

Colores de comandos de Windows shell

Los colores anteriores de ansi no funcionarán para usted en un shell de comandos de Windows. Intente mirar esto activestate code snippet

+0

Verificará esto y volverá con mis resultados. ¡Muchas gracias! –

+0

Argh. No funcionó intenté instalar, escribiendo $ ansip instalar ansicolors tal vez necesito instalar este 'pip' que nunca había oído hablar de pip antes: P –

+0

pip es el administrador de paquetes python. Si todavía no lo tienes, intenta con 'easy_install pip' primero – jdi

0

Si desea imprimir en un terminal en color, debe usar códigos de escape para el terminal que está utilizando. Para los sistemas Unix/Linux, puede usar el módulo curses, o simplemente usar bash color codes directamente como parte de su cadena de salida. No parece haber una manera fácil de hacer esto en Windows de acuerdo con this question.

+0

Así que tengo que usar Linux? Maldición. Prefiero las ventanas :((por no decir que Linux es malo) oh bien. –

+1

puede usar [cygwin] (http://cygwin.com) que básicamente le da un linux shell y programas en una plataforma Windows. Lo recomendaría para la programación en Windows de todos modos porque el shell cmd es simplemente horrible en comparación con bash. – l4mpi

1

Si está utilizando un terminal y/o cáscara que admite secuencias de escape ANSI, algo así como lo siguiente debería funcionar:

print("Blah blah \033[0;32mthis part will be green\033[00m blah blah.") 
print("Blah blah \033[0;31mthis part will be red\033[00m blah blah.") 

puedo confirmar que funciona en bash en Linux. Consulte el Wikipedia page on ANSI escape codes para obtener más detalles, incluida una tabla completa que describe los efectos de diferentes secuencias/valores de caracteres. No defiendo esto como una solución canónica, pero puede ser suficiente para sus propósitos.

6

Si desea imprimir en color en el shell IDLE, ninguna respuesta con códigos de escape ASCI lo ayudará, ya que no implementa esta función.

Hay un hack específico para IDLE que le permite escribir en su objeto PyShell directamente y especificar las etiquetas de texto que IDLE ya ha definido como "STRING" que aparecerán como verde de forma predeterminada.

import sys 

try: 
    shell = sys.stdout.shell 
except AttributeError: 
    raise RuntimeError("you must run this program in IDLE") 

shell.write("Wanna go explore? ","KEYWORD") 
shell.write("OPTIONS","STRING") 
shell.write(" : ","KEYWORD") 
shell.write("Yes","DEFINITION") 
shell.write(" or ","KEYWORD") 
shell.write("No","COMMENT") 
answer = input() 

cuando se ejecuta en ociosa puede producir este mensaje:

enter image description here

Aquí es una lista de todas las etiquetas válidas para su uso:

print("here are all the valid tags:\n") 

valid_tags = ('SYNC', 'stdin', 'BUILTIN', 'STRING', 'console', 'COMMENT', 'stdout', 
       'TODO','stderr', 'hit', 'DEFINITION', 'KEYWORD', 'ERROR', 'sel') 

for tag in valid_tags: 
    shell.write(tag+"\n",tag) 

Tenga en cuenta que 'sel' es especial que representa el texto que se selecciona, por lo que no se seleccionará una vez que se haga clic en otra cosa. También se puede usar para comenzar un texto seleccionado para copiar.

+0

¿Puedo imprimir texto en negrita con él? –

+0

Esto está limitado a cómo IDLE colorea su texto, por lo Hasta donde yo sé, solo puede tomar el esquema de color (no el tamaño del texto/negrita/fuente, etc.) configurado en las preferencias. –

0

Clint (C ommand L ineEN terface T ools) es una buena biblioteca que he utilizado. Es una biblioteca multipropósito para todo lo relacionado con la terminal. Hay funciones de allí por colores sí/no mensajes del sistema, barras de progreso, etc.

Uso de Clint para la salida de color se parece a esto:

>>> from clint.textui import colored, puts 
>>> puts(colored.red('red text')) 
red text