如何将彩色文本打印到终端?

2022-09-05 00:45:00

如何在Python中将彩色文本输出到终端?


答案 1

这在一定程度上取决于您所在的平台。执行此操作的最常见方法是打印 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 上看到其中一些位图(用户制作的图块集)。这些位图可以使用。

文本模式演示大赛有更多资源用于在文本模式下进行图形处理。


答案 2

还有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')