Как применить раскраску / форматирование к отображаемому тексту в функции 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).