Python控制台标题着色异常求助:art库无法实现蓝色标题
问题原因
你将ANSI颜色转义序列作为文本内容传入text2art函数,但该函数的作用是把输入的每个字符转换为ASCII艺术字体——它会把颜色代码的转义字符也当成普通字符处理,最终输出的是转义字符对应的艺术块,而非让终端解析颜色指令,因此颜色不生效,还会出现多余的乱码字符。
解决方案
先让text2art生成纯文本的ASCII艺术字,再给整个艺术字内容包裹ANSI颜色代码,终端就能正确解析颜色指令了。
修正后的代码:
from art import * import ctypes # 开启Windows控制台的ANSI转义支持(该代码有效,可保留) kernel32 = ctypes.WinDLL('kernel32') hStdOut = kernel32.GetStdHandle(-11) mode = ctypes.c_ulong() kernel32.GetConsoleMode(hStdOut, ctypes.byref(mode)) mode.value |= 4 kernel32.SetConsoleMode(hStdOut, mode) 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' # 先生成纯文本的ASCII艺术字 art_text = text2art("COOL HEADER", font='graffiti', chr_ignore=True) # 给整个艺术字包裹颜色代码后打印 print(f"{bcolors.OKBLUE}{art_text}{bcolors.ENDC}")
额外说明
- 若使用Windows Terminal或新版本PowerShell,默认已支持ANSI转义序列,那部分ctypes开启控制台模式的代码可省略,保留也不会有问题。
- 确保你的终端支持ANSI颜色输出(现代终端如Windows Terminal、PowerShell、Linux/macOS终端均支持)。
内容的提问来源于stack exchange,提问作者Daniel Fraser
相关产品推荐
相关产品推荐

