отображать вводимый пользователем текст в цвете в Windows CMD - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть еще один вопрос, касающийся моей маленькой консольной программы для Windows cmd.

Я использую колораму для окраски текста в терминале, что делает его похожим на это:

enter image description here

Затем я узнал, как закрасить текст с помощью input() -метода, используя небольшую «хакерскую» печать с разрывом строки, например:

from colorama import init
init(autoreset=True)
YELLOW = "\x1b[1;33;40m" 

print(f"\n{YELLOW}Turnier spielen? [T]: ", end='')
tournament = input()

это приводит к желтой линии на картинке выше.

Но я все еще ищу способ раскрасить те символы, которые вводит пользователь - поэтому здесь я хотел бы также отформатировать ввод пользователя "sdffdgf ..." в цвет.

enter image description here

есть у кого-нибудь решение для меня, или это просто невозможно с ограниченным cmd windows?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Удаление строки init(autoreset=True) из вашего кода выполняется на моем компьютере так, как вы хотите.

import colorama

from colorama import Fore,Style,Back
colorama.init()

YELLOW = "\x1b[1;33;40m" 
RED = "\x1b[1;31;40m"

print(f"\n{YELLOW}Turnier spielen? [T]: ", end='')
tournament = input()
print(f"\n{RED}Turnier spielen? [T]: ", end='')
tournament2 = input()

code together with output to see it working

Моя версия colorama colorama==0.3.9.

Colorama docs заявляет, что при использовании autoreset=true он сбрасывает параметры цвета и стиля сразу после команды print, это происходит до того, как вы доберетесь до своей команды ввода, котораяпочему вы не получаете цвета в набранном пользователем тексте.

0 голосов
/ 27 сентября 2018

https://docs.python.org/3/library/functions.html#input

Вы можете передать input() строку для отображения перед фактическим вводом пользователя.

from colorama import init
init(autoreset=True)
YELLOW = "\x1b[1;33;40m"
RED = "\x1b[1;31;40m"

print(f"\n{YELLOW}Turnier spielen? [T]: ", end='')
tournament = input(RED)

Возможно, вы можете избавиться от вызова print(..., end='')с этим.

...