在Windows cmd中以彩色显示用户输入的文本

时间:2018-09-27 08:19:59

标签: python formatting colorama

关于Windows cmd的小控制台程序,我还有另一个问题。

我使用colorama在终端中为文本着色,这看起来像这样:

enter image description here

然后,我发现了如何使用{hack}并在不换行的情况下使用打印的一点“ hack”来为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

有人对我有解决方案吗?还是有限的Windows cmd无法做到?

2 个答案:

答案 0 :(得分:1)

在您的计算机上按您的意愿运行,从代码中删除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命令之后立即重置您的颜色和样式选项,这是在您进入输入命令之前发生的,这就是您这样做的原因无法获得用户键入的文本中的颜色。

答案 1 :(得分:0)

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='')的呼叫。