Python: Kolorowy tekst w konsoli

22-mar-2021

Większość terminali, zarówno na Unix, jak i pod Windows obsługują „kody ucieczki” pozwalające na takie sformatowanie napisu wyświetlanego w konsoli poleceniem print, aby wyświetlany tekst otrzymał odpowiedni kolor.

Szczegółowo ten mechanizm jest opisany tutaj:

https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

Jeśli jednak chcesz ominąć czytanie długiej dokumentacji, bo po prostu chcesz wyświetlić coś na kolorowo, to powinno wystarczyć rozumienie poniższej instrukcji:

print('\x1b[38;2;255;0;0m\x1b[48;2;255;255;0m' + 'WWW.MOBILO24.EU!' + '\x1b[0m')

Co tu się dzieje?

  • \x1b[ to właśnie znak ucieczki wprowadzający informacje kontrolne dla terminala. Jest to więc coś, co nie jest wyświetlane, tylko interpretuje to sobie terminal. Instrukcja tu zapisana kończy się za literką m. W powyższym przykładzie ta instrukcja występuje aż trzy razy:
    • pierwsza wprowadza kolor tekstu (foreground)
    • druga wprowadza kolor tła (background)
    • a trzecia resetuje terminal do ustawień domyślnych, czyli kasuje informacje o używanych kolorach
  • Fragment 38;2;255;0;0 oznacza:
    • 38 – określa, że definiujesz kolor tekstu (foreground)
    • 2 – określa, że ciąg dalszy jest w formacie RGB
    • kolejne 3 liczby definiują kolor RGB – tutaj czerwony
  • Fragment 48;2;255;255;0 oznacza:
    • 48 – określa, że definiujesz kolor tła (background)
    • 2 – określa, że ciąg dalszy jest w formacie RGB
    • kolejne 3 liczby definiują kolor RGB – tutaj żółty
  • Ostatnia instrukcja to wreszcie reset ustawień terminala, tutaj pomijając znak ucieczki i znak końca instrukcji „m”, istrukcja ta ogranicza się do „0”
  • Pośrodku wstawiasz tekst do wyświetlenia

Gotowe!

Komentarze są wyłączone

Autor: Rafał Kraik