关于Windows cmd的小控制台程序,我还有另一个问题。
我使用colorama在终端中为文本着色,这看起来像这样:
然后,我发现了如何使用{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 ...”。
有人对我有解决方案吗?还是有限的Windows cmd无法做到?
答案 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()
我的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='')
的呼叫。