2012-06-19 19 views
9

Nuovo per entrambi Python e Stackoverflow, mi piacerebbe un piccolo aiuto. Mi piacerebbe stampare a colori in Python, ed ho Googled, ma con poca fortuna :(ho confuso ogni volta e nessuno ha funzionato. Questo è il codice che ho digitato.Come stampare colore/colore in 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!") 

Ora, vorrebbe avere opzioni di colore verde e Yes di colore blu e non di colore rosso. Come si potrebbe raggiungere questo obiettivo?

+0

Il codice manca indentazione ed è sintatticamente valido. Dovresti prima aggiustarlo. Inoltre, non capisco le tue esigenze. Quale input porterebbe a quale output? – phihag

+0

Siamo spiacenti. Non ho copiato e incollato il codice direttamente, perché non è possibile farlo in IDLE, ma funziona bene in IDLE. Ora, voglio fare in modo che le opzioni siano colorate in verde, Sì in blu e No in rosso. Ora, sono nuovo di Python e non ho idea di come farlo. Qualche idea? Inoltre, mi scuso se non ti ho dato la risposta che avresti voluto. Sarò onesto, non capisco cosa intendi a 'quale output porterebbe a quale output' –

+0

ho corretto la sintassi del tuo codice. – SomeKittens

risposta

4

Estrai il modulo curses. questo sostituirà le print dichiarazioni e vi darà il controllo completo sul posizionamento del testo e gli attributi su il tuo schermo

3

Se vuoi semplicemente un semplice modo raightforward per stampare ANSI colori nel terminale è possibile controllare la ansicolor package module:

installare tramite pip

$ pip install ansicolors 

frammento Uso

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 sui pip

pip è un gestore di pacchetti python. Se non si dispone di pip installato, è possibile installarlo con easy_install pip

Se poi trovare non avete easy_install, quindi scaricare questo: http://peak.telecommunity.com/dist/ez_setup.py e fare:

python ez_setup.py 
easy_install pip 

colori per dei comandi di Windows shell

I colori ansi precedenti non funzioneranno in una shell di comando di Windows. Prova a guardare questo activestate code snippet

+0

Verificherà questo e tornerà con i miei risultati. Molte grazie! –

+0

Argh. Non ha funzionato Ho provato a installare, digitando $ pip install ansicolors, forse ho bisogno di installare questo 'pip' che non ho mai sentito di pip prima: P –

+0

pip è il gestore di pacchetti python. Se non lo hai già fatto, prova con 'easy_install pip' first – jdi

0

Se si desidera stampare a un terminale a colori, è necessario utilizzare i codici di escape per il terminale che si sta utilizzando. Per i sistemi unix/linux è possibile utilizzare il modulo curses oppure utilizzare semplicemente bash color codes direttamente come parte della stringa di output. Non sembra essere un modo semplice per farlo in Windows secondo this question.

+0

Quindi devo usare Linux? Damnit. Preferisco windows :((per non dire che linux è male) oh beh .. –

+1

potresti usare [cygwin] (http://cygwin.com) che fondamentalmente ti dà una linux shell e programmi su una piattaforma Windows Lo raccomando per la programmazione in Windows comunque perché la shell cmd è semplicemente terribile rispetto a bash – l4mpi

1

Se si utilizza un terminale e/o di shell che supporta sequenze di escape ANSI, qualcosa come il seguente dovrebbe funzionare:

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.") 

posso confermare che funziona in bash su Linux. Vedere lo Wikipedia page on ANSI escape codes per ulteriori dettagli, inclusa una tabella completa che descrive gli effetti di sequenze/valori di caratteri diversi. Non lo difendo come una soluzione canonica, ma potrebbe essere sufficiente per i tuoi scopi.

6

Se si desidera stampare il colore nella shell IDLE, nessuna risposta utilizzando i codici di escape ASCI sarà di aiuto in quanto non implementa questa funzione.

C'è un hack specifico per IDLE che permette di scrivere alla sua PyShell oggetto direttamente e specificare i tag di testo che IDLE ha già definito come "STRING" che apparirà come verde per impostazione predefinita.

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() 

se eseguito in IDLE si tradurrà in questo prompt:

enter image description here

Ecco un elenco di tutti i tag validi per l'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) 

noti che 'sel' è speciale che rappresenta il testo che è selezionato, quindi sarà non selezionato una volta che si è fatto clic su qualcos'altro. Inoltre può essere usato per iniziare un testo selezionato per la copia.

+0

Posso stampare il testo in grassetto con esso? –

+0

Questo è limitato a come IDLE colori è testo, quindi per quanto ne so, può assumere la configurazione dei colori (non in formato testo/grassetto/font ecc.) nelle preferenze. –

0

Clint (C ommand L ine IN terface T ools) è una buona biblioteca che ho usato. È una libreria multiuso per qualsiasi cosa abbia a che fare con il terminale. Ci sono funzioni in là per i colori, si/no prompt, barre di avanzamento, ecc

Uso Clint per l'uscita colorato assomiglia a questo:

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