Как использовать цвет в командной строке Windows с помощью Python?
-
19-09-2019 - |
Вопрос
Я пытаюсь исправить проблема с waf, где вывод командной строки Windows не окрашен, как предполагалось.Я пытаюсь понять, как на самом деле реализовать этот патч, но у меня возникли проблемы с поиском достаточных ресурсов. Может ли кто-нибудь указать мне правильное направление?
Обновление 1
Пожалуйста, не предлагайте ничего, что требует Cygwin.
Решение
Это возможно благодаря ctypes и SetConsoleTextAttribute
Вот пример
from ctypes import *
STD_OUTPUT_HANDLE_ID = c_ulong(0xfffffff5)
windll.Kernel32.GetStdHandle.restype = c_ulong
std_output_hdl = windll.Kernel32.GetStdHandle(STD_OUTPUT_HANDLE_ID)
for color in xrange(16):
windll.Kernel32.SetConsoleTextAttribute(std_output_hdl, color)
print "hello"
Другие советы
Если вы хотите использовать обычные консоли cmd.exe для интерактивного интерпретатора Python, см. этот рецепт.Если вас устраивает использование специальных окон, имитирующих консоль, например потому, что вам все равно нужны более продвинутые функции проклятий, тогда предложение @TheLobster о wcurses вполне подойдет.