如何在IDLE终端中打印彩色文本?

时间:2017-02-26 19:14:11

标签: python python-3.x colors python-idle

这很容易成为一个重复的问题 - 因为它是。但是,对此有很多不充分的答案(例如试试curses! - 指向26页的文档)。

我只想在IDLE输出时以蓝色以外的颜色打印文本。可能吗?有什么简单的方法可以做到这一点?我在Windows上运行Python 3.6。

请举例说明。

(我发现ANSI代码在IDLE中不起作用,只在终端上起作用。)

6 个答案:

答案 0 :(得分:9)

将其放在代码的“开头”:

import sys

try: color = sys.stdout.shell
except AttributeError: raise RuntimeError("Use IDLE")

然后使用color.write(YourText,Color)进行“打印”:

color.write("Hi, are you called Miharu461? \n","KEYWORD")
color.write("Yes","STRING")
color.write(" or ","KEYWORD")
color.write("No\n","COMMENT")

打印:

Prints

注意:这不会自动输入回车(就像在print函数/声明中一样)。因此,当您在最后一个字符串的末尾打印放置\n来放置它时。

您可以添加“颜色”:SYNCstdinBUILTINSTRINGconsoleCOMMENT,{{ 1}},stdoutTODOstderrhitDEFINITIONKEYWORDERROR

注2 :这取决于您用于IDLE的配色方案。所以我建议你用它来突出显示,而不是制作一个程序来询问颜色是什么字。

答案 1 :(得分:2)

您也可以使用clrprint模块在空闲,终端和Powershell中打印彩色文本。

安装:

pip安装clrpirnt

用法:

from clrprint import *
clrhelp() # to see colors available
user_input = clrinput('INPUT MESSAGE',clr='green') # just like input()
clrprint('YOURTEXT',user_input,clr='color')   # just like print()

答案 2 :(得分:1)

根据Strange output when writing to stdout in console“... write也将返回字符数(实际上,字节,尝试sys.stdout.write('へllö'))当python控制台打印每个字符的返回值表达式为stdout,返回值附加到实际打印值。“

使用

dummy = color.write("Hello world","COMMENT")

“吃掉”额外的输出。

答案 3 :(得分:0)

该长度的strnage输出是使用return关键字,并且NORMAL也是一种颜色

答案 4 :(得分:-1)

简短的回答:不,不可能在IDLE shell中为不同的输出着色。

唯一的颜色更改可以让您更改整个颜色主题,但这会影响所有打印的字符串。如果你需要彩色输出,你可能应该从IDLE这样的基本IDE或至少比基本IDLE shell更完整的shell切换。请参阅此副本:Change printed text color in Idle?

答案 5 :(得分:-1)

我遇到的问题是如何在IDLE中正确输出错误消息,因为sys.exc_info()的打印方式与正常输出相同,而traceback.print_exc()的时间太长且太详细了。因此,我只想用“ traceback”之类的红色打印Exception。

感谢顶级管理员,让我了解了如何使用write()指定消息的类型。偶然地,我通过在print()时简单地添加file=sys.stderr找到了另一个符合我的要求的方法。然后,我将得到一个引人注目的但简短的错误消息。 python 3.6中的示例:

import sys
try:
    1/0
except Exception as e:
    print(repr(e), file=sys.stderr)