2017-11-22 107 views
12

Próbuję wydrukować kolorowy tekst z COLORAMA ale kiedy kompilacji exe i uruchomić następujące ...wyjście [31m tekstu zamiast koloru

from colorama import Fore, Back, Style 
print(Fore.RED + 'text') 
print(Back.GREEN + 'and with a green background') 
print(Style.DIM + 'and in dim text') 
print(Style.RESET_ALL) 
print('back to normal now') 
I get output of:: 

wyjściowa:

[31mtext 
[0m 
back to normal now 

Czy go można wydrukować kolory podczas kompilacji do programu pzinstalacyjnego exe lub jest to po prostu niemożliwe?

+0

Coś spada lub ignoruje postać ucieczki, ale musisz powiedzieć nam więcej o tym, jak to robisz, abyśmy mogli dowiedzieć się, dlaczego tak się dzieje. Na początek, która wersja 'colorama', zainstalowana jak, na jakiej platformie? – tripleee

+1

@tripleee Używam okien i najnowszej wersji colorama. Po prostu używam: Pyinstaller -F color.py –

Odpowiedz

8

W systemie Windows, trzeba zainicjować COLORAMA z colorama.init() (patrz drugi wiersz):

from colorama import Fore, Back, Style 
colorama.init() 
print(Fore.RED + 'text') 
print(Back.GREEN + 'and with a green background') 
print(Style.DIM + 'and in dim text') 
print(Style.RESET_ALL) 
print('back to normal now') 

Ja testowałem ten kod w cmd i PowerShell i produkuje oczekiwanego kolorowe wydajność.

Od Colorama docs:

W Windows, nazywając init() filtruje sekwencje ANSI z dowolnym tekstem przesłanym stdout lub stderr, i zastąpić je nazywa odpowiednik Win32.

Na innych platformach wywoływanie init() nie daje żadnego efektu (chyba że zażądasz innych opcjonalnych funkcji, zobacz "Init Keyword Args" poniżej). Z założenia pozwala to aplikacjom na bezwarunkowe wywoływanie init() na wszystkich platformach, po których wyjście ANSI powinno po prostu działać.

3

cmd.exe systemu Windows nie obsługuje sekwencji kontrolnych ANSI.

ten temat na superużytkownika potęgi pomaga, jeśli chcą one być intepreted przez cmd.exe natywnie http://superuser.com/questions/413073/windows-console-with-ansi-colors-handling/

tak czysta kredki nie może prace cmd.exe Windows.

Jednak według dokumentacji COLORAMA

Ma Wynikiem zapewniając prostą wieloplatformowe API dla druku kolorowego tekstu terminala z Pythonie i ma szczęśliwy skutek uboczny, że istniejące aplikacje lub bibliotek, które wykorzystują Sekwencje ANSI do generowania kolorowych wydruków w systemie Linux lub Mac mogą teraz działać również w systemie Windows, po prostu wywołując colorama.init().

Spróbuj użyć ConEmu. Możesz być w stanie to zrobić

+0

Czy mogę wydrukować kolorowy tekst, który również działa, gdy uruchomię go na moim laptopie? Czy możesz podać przykład? Brzmi interesująco. –

+0

Nie testowałem tego w systemie Windows. Jeśli nie conemu, są inne pakiety. – bigbounty

+0

Widzę. Zakładam, że sprawiłoby to, że kolory działałyby na moim komputerze, ale gdybym użył tego na innej zewnętrznej zależności, musiałbym zainstalować, co nie jest idealne. –