Python: Colori nel terminale

Colorare il testo nel terminale con le sequenze ANSI (\x1b)

Il colore del testo e dello sfondo nei messaggi stampati in Python si può modificare usando sequenze di escape ANSI, senza usare librerie esterne.


Cos’è \x1b e come funziona

\x1b è il carattere ESC (Escape) in formato esadecimale. Viene usato per avviare una sequenza di controllo ANSI:

\x1b[m

Esempio:

print("\x1b[31mTesto rosso\x1b[0m")

31 indica il colore rosso. 0m serve a resettare lo stile dopo la stampa.


Tabella Colori ANSI

Colori normali – Testo (foreground)

Colore Codice
Nero 30
Rosso 31
Verde 32
Giallo 33
Blu 34
Magenta 35
Ciano 36
Bianco 37

Colori normali – Sfondo (background)

Colore Codice
Nero 40
Rosso 41
Verde 42
Giallo 43
Blu 44
Magenta 45
Ciano 46
Bianco 47

Colori brillanti (High Intensity)

Testo brillante (foreground)

Colore Codice
Nero brillante 90
Rosso brillante 91
Verde brillante 92
Giallo brillante 93
Blu brillante 94
Magenta brillante 95
Ciano brillante 96
Bianco brillante 97

Sfondo brillante (background)

Colore Codice
Nero brillante 100
Rosso brillante 101
Verde brillante 102
Giallo brillante 103
Blu brillante 104
Magenta brillante 105
Ciano brillante 106
Bianco brillante 107

Combinazioni avanzate

  • Grassetto: 1
  • Sottolineato: 4
  • Reset totale: 0

Esempi:

print("\x1b[1;91mTesto rosso brillante in grassetto\x1b[0m")
print("\x1b[4;34;47mTesto blu sottolineato con sfondo bianco\x1b[0m")
print("\x1b[92;104mVerde brillante con sfondo blu brillante\x1b[0m")

Attività proposta

Crea un menu con opzioni colorate:

print("\x1b[92m1. Avvia\x1b[0m")
print("\x1b[93m2. Impostazioni\x1b[0m")
print("\x1b[91m3. Esci\x1b[0m")

Salvare i codici ANSI in variabili (buona pratica)

Per rendere il codice più leggibile e facile da mantenere, possiamo assegnare le sequenze ANSI a delle variabili:


# Colori testo
ROSSO = "\x1b[31m"
VERDE = "\x1b[32m"
GIALLO = "\x1b[33m"
RESET = "\x1b[0m"

# Colori sfondo
SFONDO_BLU = "\x1b[44m"
SFONDO_GIALLO = "\x1b[43m"

# Stili
GRASSETTO = "\x1b[1m"
SOTTOLINEATO = "\x1b[4m"

# Esempi di utilizzo
print(GRASSETTO + ROSSO + "Errore: qualcosa è andato storto!" + RESET)
print(VERDE + SFONDO_GIALLO + "Successo!" + RESET)
print(SOTTOLINEATO + "Testo sottolineato" + RESET)

In questo modo, possiamo comporre i messaggi usando le variabili, evitando di ripetere i codici ogni volta e migliorando la chiarezza del codice.

Torna in alto