协慌网

登录 贡献 社区

在终端上打印颜色?

如何在 Python 中将彩色文本输出到终端?表示实体块的最佳 Unicode 符号是什么?

答案

这在某种程度上取决于您所处的平台。最常见的方法是打印 ANSI 转义序列。举一个简单的例子,这里有一些来自blender 构建脚本的 python 代码:

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    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

这将适用于包括 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 字体的图像。您可以在Dwarf Fortress Wiki上找到一些可以使用的位图( 用户自制的 tilesets )。

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

嗯...... 我觉得这个答案有点过分了。不过,我正在计划一个史诗般的基于文本的冒险游戏。祝你的彩色文字好运!

我很惊讶没人提到Python termcolor 模块 。用法非常简单:

from termcolor import colored

print colored('hello', 'red'), colored('world', 'green')

或者在 Python 3 中:

print(colored('hello', 'red'), colored('world', 'green'))

然而,对于游戏编程和你想要做的 “彩色块” 来说,它可能不够复杂......

答案是Colorama用于 Python 中的所有跨平台着色。

Python 3.6 示例截图: 示例截图