如何将彩色文本打印到终端?
2022-09-05 00:45:00
如何在Python中将彩色文本输出到终端?
这在一定程度上取决于您所在的平台。执行此操作的最常见方法是打印 ANSI 转义序列。举个简单的例子,这里有一些来自Blender构建脚本的Python代码:
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKCYAN = '\033[96m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
要使用这样的代码,您可以执行如下操作:
print(bcolors.WARNING + "Warning: No active frommets remain. Continue?" + bcolors.ENDC)
或者,使用Python 3.6 +:
print(f"{bcolors.WARNING}Warning: No active frommets remain. Continue?{bcolors.ENDC}")
这将适用于包括OS X,Linux和Windows在内的Unix(前提是您使用ANSICON,或者在Windows 10中启用VT100仿真)。有用于设置颜色,移动光标等的ANSI代码。
如果你打算对此感到复杂(听起来你正在写一个游戏),你应该看看“curses”模块,它为你处理了很多复杂的部分。Python Curses HowTO是一个很好的介绍。
如果您没有使用扩展的ASCII(即不在PC上),则会遇到低于127的ASCII字符,而“#”或“@”可能是您阻止的最佳选择。如果可以确保终端使用的是 IBM 扩展 ASCII 字符集,那么还有更多选择。字符 176、177、178 和 219 是“块字符”。
一些基于文本的现代程序,如“矮人要塞”,在图形模式下模拟文本模式,并使用经典PC字体的图像。您可以在矮人要塞 Wiki 上看到其中一些位图(用户制作的图块集)。这些位图可以使用。
文本模式演示大赛有更多资源用于在文本模式下进行图形处理。
还有Python术语color模块。用法非常简单:
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
或者在Python 3中:
print(colored('hello', 'red'), colored('world', 'green'))
但是,对于游戏编程和您想要执行的“彩色块”而言,它可能不够复杂......
要使 ANSI 代码在窗口上工作,请先运行
os.system('color')