如何在终端打印彩色文本?
我该如何在Python中向终端输出彩色文本呢?
65 个回答
答案是Colorama,这是一个可以在不同操作系统上使用的Python颜色库。
它支持Python 3.5及以上版本,还有Python 2.7。
截至2023年1月,它仍在维护中。
示例代码:
from colorama import init as colorama_init
from colorama import Fore
from colorama import Style
colorama_init()
print(f"This is {Fore.GREEN}color{Style.RESET_ALL}!")
还有一个叫做Python termcolor模块。使用起来非常简单:
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
在Python 3中也是这样:
print(colored('hello', 'red'), colored('world', 'green'))
不过,这个模块可能不够复杂,无法满足你在游戏编程中想要实现的“彩色块”的需求...
要在Windows上使用ANSI代码,首先需要运行:
os.system('color')
这有点儿依赖于你使用的平台。最常见的做法是打印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入门指南是个不错的介绍。
如果你不使用扩展ASCII(也就是说,不在PC上),你只能使用127以下的ASCII字符,'#'或'@'可能是你用来表示块的最佳选择。如果你能确保你的终端使用的是IBM扩展ASCII字符集,你就有更多的选择。字符176、177、178和219是“块字符”。
一些现代的基于文本的程序,比如“Dwarf Fortress”,在图形模式下模拟文本模式,并使用经典PC字体的图像。你可以在Dwarf Fortress Wiki上找到一些可以使用的位图(见用户制作的图块集)。
文本模式演示比赛提供了更多关于在文本模式下做图形的资源。