python - 如何对 input() 函数中显示的文本应用着色/格式化(类似于 print 语句格式化)?

标签 python formatting string-formatting windows-console colorama

我有一个小游戏应用程序,它是从 Windows 控制台 (cmd.exe) 启动的。我能够使用 ANSI 转义序列以任何需要的方式格式化文本。

我也很想将格式应用到 input() 方法中的文本,但我还没有找到如何做到这一点的方法。这是测试代码...

from colorama import init
init(autoreset=True)

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

print(f"{RED}This text is red\n")

not_red = input(f"{RED}Insert some random stuff: ")

在我的 Windows 控制台中,您会看到 ANSI 序列在输入语句中显示为一个简单的字符串:

enter image description here

而在我的 Spyder IDE 控制台中,它具有相反的效果:

enter image description here

任何人都可以向我解释不同控制台中显示的行为吗? 有什么方法可以在 Windows cmd 控制台中格式化 input()-text 吗?这是我的程序正常运行的地方,我想让它更漂亮 :-)

提前致谢!

最佳答案

colorama 作品 replacing sys.stdout and sys.stderr使用解释 ISO 6429 序列的版本,进行适当的 Win32 调用来实现它们,并将其余字符发送到基础流。这解释了您的观察:input 不使用 Python 级 sys.stdout.write,Spyder 解释序列本身但不受 Win32 调用的影响。

唯一合理的解决方法似乎是在没有提示的情况下使用input;您只需要打印您的提示,没有换行符(Python 2 中的尾随 ,end="" Python 3).

关于python - 如何对 input() 函数中显示的文本应用着色/格式化(类似于 print 语句格式化)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52102240/

相关文章:

c# - 如何在格式字符串中使用与语言环境无关的小数点和数字分隔符?

python - 将整数格式化为带前导零的字符串的最佳方法?

python - 检索字符串列表中第一次出现的子字符串

python - Numpy矩阵行列式精度问题

html - 如何将字母居中放置在圆圈中间以创建一种抽认卡效果?

c# - C++ 中的 String.Format 替代方案

python - 在 Python 中获取文件属性(隐藏、只读、系统、存档)

python - 如何创建具有多个模式的 z3c.form?

Java:toString 的员工层次结构格式错误

java - 无法打印/获取二维数组的特定行