python - 如何对 input() 函数中显示的文本应用着色/格式(类似于打印语句格式)?
问题描述
我有一个小型游戏应用程序,它是从 Windows 控制台 (cmd.exe) 启动的。我可以使用 ANSI 转义序列以任何所需的方式格式化文本。
我也很想通过input()
-method 对文本应用格式,但我还没有找到方法。这是测试代码...
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 序列在输入语句中显示为一个简单的字符串:
而在我的 Spyder IDE 控制台中,它具有相反的效果:
谁能向我解释不同控制台中显示的行为?有没有办法input()
在 Windows cmd 控制台中格式化 -text ?这是我的程序正常运行的地方,我想让它更漂亮:-)
提前致谢!
解决方案
colorama
通过替换sys.stdout
和sys.stderr
使用解释 ISO 6429 序列的版本来工作,进行适当的 Win32 调用来实现它们,并将其余字符发送到基础流。这解释了您的观察:input
不使用 Python 级别sys.stdout.write
,并且 Spyder 自己解释序列,但不受 Win32 调用的影响。
唯一合理的解决方法似乎是在input
没有提示的情况下使用;除了没有换行符的提示( Python 2 或Python 3 中print
的尾随)之外,您不需要做任何其他事情。,
end=""
推荐阅读
- python - Python 从用户获取输入 - 错误“名称未定义”
- javascript - 从 JavaScript onclick 调用 jQuery
- ios - AVAudioSessionCategoryPlayBackAndRecord 在汽车的蓝牙扬声器上显示呼叫是在自己号码上发起的
- python - Python:熊猫数据框复杂更新条件
- spring-security - 如何在 Spring 测试中模拟 OAuth2Authentication 对象
- php - 为什么PC和笔记本电脑的代码结果不同
- c - 在 C 中指向字符串的指针中使用 strcpy()
- python - Python(熊猫)遍历列中的值,对每个值进行计算
- python - 如何在python中将字符串转换为python代码?
- javascript - 节点:如何扩展 module.paths