如何将coloring/formatting应用于input()-function中显示的文本(类似于print语句格式)?
How to apply coloring/formatting to the displayed text in input()-function (similar to print statement formatting)?
我有一个小游戏应用程序,它是从 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 序列在输入语句中显示为一个简单的字符串:
而在我的 Spyder IDE 控制台中,它具有相反的效果:
任何人都可以向我解释不同控制台中显示的行为吗?
有什么方法可以在 Windows cmd 控制台中格式化 input()
-text 吗?这是我的程序通常 运行 所在的位置,我想让它更漂亮 :-)
提前致谢!
colorama
由 replacing sys.stdout
and sys.stderr
使用解释 ISO 6429 序列的版本,进行适当的 Win32 调用来实现它们,并将其余字符发送到基础流。这解释了您的观察结果:input
不使用 Python 级别 sys.stdout.write
,并且 Spyder 解释序列本身但不受 Win32 调用的影响。
唯一合理的解决方法似乎是在没有提示的情况下使用 input
;您只需要 print
没有换行符的提示(Python 2 中的尾随 ,
或 Python 3 中的 end=""
)。
我有一个小游戏应用程序,它是从 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 序列在输入语句中显示为一个简单的字符串:
而在我的 Spyder IDE 控制台中,它具有相反的效果:
任何人都可以向我解释不同控制台中显示的行为吗?
有什么方法可以在 Windows cmd 控制台中格式化 input()
-text 吗?这是我的程序通常 运行 所在的位置,我想让它更漂亮 :-)
提前致谢!
colorama
由 replacing sys.stdout
and sys.stderr
使用解释 ISO 6429 序列的版本,进行适当的 Win32 调用来实现它们,并将其余字符发送到基础流。这解释了您的观察结果:input
不使用 Python 级别 sys.stdout.write
,并且 Spyder 解释序列本身但不受 Win32 调用的影响。
唯一合理的解决方法似乎是在没有提示的情况下使用 input
;您只需要 print
没有换行符的提示(Python 2 中的尾随 ,
或 Python 3 中的 end=""
)。