Как применить раскраску / форматирование к отображаемому тексту в функции input () (аналогично форматированию инструкции печати)?
у меня есть небольшое игровое приложение, которое запускается с консоли Windows (cmd.исполняемый.) Я могу форматировать текст любым желаемым способом, используя escape-последовательности ANSI.
Я также хотел бы применить форматирование к тексту из input()-способ, но я не нашел способа как это сделать. Вот тестовый код...
from colorama import init
init(autoreset=True)
RED = "x1b[1;31;40m"
print(f"{RED}This text is redn")
not_red = input(f"{RED}Insert some random stuff: ")
в моей консоли windows вы увидите, что последовательность ANSI отображается как простая строка во входных данных заявление:
тогда как в моей консоли Spyder IDE он имеет обратный эффект:
может ли кто-нибудь объяснить мне отображаемое поведение в разных консолях?
И есть ли способ отформатировать input() - текст в консоли Windows cmd? Здесь моя программа работает нормально, и я хотел бы сделать ее еще красивее: -)
спасибо заранее!
1 ответов
colorama произведения замена sys.stdout и sys.stderr С версиями, интерпретирующими последовательности ISO 6429, выполните соответствующие вызовы Win32 для их реализации и отправьте остальные символы в базовый поток. Этим объясняются ваши наблюдения:--3--> не использует уровень Python sys.stdout.write, и Spyder интерпретирует сами последовательности, но не влияет на вызовы Win32.
единственным разумным решением, по-видимому, является использование input без подсказки; вы не нужно делать больше, чем print ваше приглашение без новой строки (трейлинг , в Python 2 или end="" в Python 3).

