Python和StackOverflow都是新手,我需要一些帮助。我想在Python中打印颜色并使用Google搜索但运气不佳:(我每次都感到困惑,没有人工作过。 这是我输入的代码。
answer = input ("Wanna go explore? OPTIONS : Yes or No")
if answer == "no":
print("Awww, come on, don't be like that, lets go!")
elif answer == "yes":
print ("Great! Lets go!")
else:
print("Whats that? I couldn't hear you!")
现在,我希望OPTIONS为绿色,是蓝色,无红色。如何实现这一目标?
答案 0 :(得分:6)
如果你想在IDLE shell中打印颜色,使用ASCI转义码的答案对你没有帮助,因为它没有实现这个功能。
特定于IDLE的黑客可让您直接写入PyShell
对象并指定IDLE已定义的文本标记,例如"STRING"
,默认情况下显示为绿色。
import sys
try:
shell = sys.stdout.shell
except AttributeError:
raise RuntimeError("you must run this program in IDLE")
shell.write("Wanna go explore? ","KEYWORD")
shell.write("OPTIONS","STRING")
shell.write(" : ","KEYWORD")
shell.write("Yes","DEFINITION")
shell.write(" or ","KEYWORD")
shell.write("No","COMMENT")
answer = input()
在IDLE中运行时会出现以下提示:
以下是所有有效标签的列表:
print("here are all the valid tags:\n")
valid_tags = ('SYNC', 'stdin', 'BUILTIN', 'STRING', 'console', 'COMMENT', 'stdout',
'TODO','stderr', 'hit', 'DEFINITION', 'KEYWORD', 'ERROR', 'sel')
for tag in valid_tags:
shell.write(tag+"\n",tag)
请注意,'sel'
是特殊的,它代表所选的文本,因此一旦点击了其他内容,它就会被取消选中。它也可用于启动一些选择进行复制的文本。
答案 1 :(得分:4)
查看curses
模块。这将取代print
语句,让您完全控制屏幕上的文本定位和属性。
答案 2 :(得分:4)
如果您只是想要一种非常简单直接的方式在终端中打印ansi颜色,您可以查看ansicolor package module:
通过点击安装
$ pip install ansicolors
使用代码段
from colors import red, green, blue
print red('This is red')
print green('This is green')
print blue('This is blue')
from colors import color
for i in range(256):
print color('Color #%d' % i, fg=i)
关于pip的说明
pip是一个python包管理器。如果您没有安装pip
,则可以使用easy_install pip
如果您发现自己没有easy_install
,请下载:http://peak.telecommunity.com/dist/ez_setup.py并执行:
python ez_setup.py
easy_install pip
Windows命令shell的颜色
上面的ansi颜色在windows命令shell中不适合你。试着看看activestate code snippet
答案 3 :(得分:2)
如果您正在使用支持ANSI转义序列的终端和/或shell,则以下内容应该有效:
print("Blah blah \033[0;32mthis part will be green\033[00m blah blah.")
print("Blah blah \033[0;31mthis part will be red\033[00m blah blah.")
我可以确认它在Linux上的bash
中有效。有关详细信息,请参阅Wikipedia page on ANSI escape codes,包括描述不同字符序列/值的影响的综合表。我不主张这是一个规范的解决方案,但它可能足以满足您的目的。
答案 4 :(得分:2)
我建议使用这个新的库 Printy ,该库随附了print()和input()的替代函数。刚刚发布了1.2.0版作为跨平台库。
它基于标志,因此,对于您的使用情况,您可以执行以下操作:
from printy import inputy
# with inline formats, this will apply a green(n)
# to the word 'OPTIONS', blue (b) to the word 'Yes', and red (r) to
# the word No
inputy("Wanna go explore? [n]OPTIONS@ : [b]Yes@ or [r]No@")
您还可以应用一些验证,并且返回值将已经转换为布尔值(或取决于指定的类型)
它可以让您做更多有趣的事情,请查看: Printy on github
答案 5 :(得分:0)
如果要打印到彩色终端,则必须使用您正在使用的终端的转义码。对于unix / linux系统,您可以使用curses
模块 - 或者直接使用bash color codes作为输出字符串的一部分。根据{{3}},在Windows中似乎没有一种简单的方法可以做到这一点。
答案 6 :(得分:0)
Clint( C ommand L ine IN terface T ools)是一个很好的图书馆我用过的。它是一个多功能库,可用于与终端有关的任何事情。那里有颜色,是/否提示,进度条等功能。
使用Clint进行彩色输出如下所示:
>>> from clint.textui import colored, puts
>>> puts(colored.red('red text'))
red text
答案 7 :(得分:0)
一种简单的方法,可以很好地打印文本或使用python设置文本样式,而无需任何插件或程序包。
# the ANSI codes are stored in variables, making them easier to use
black = "\033[0;30m"
red = "\033[0;31m"
green = "\033[0;32m"
yellow = "\033[0;33m"
blue = "\033[0;34m"
magenta = "\033[0;35m"
cyan = "\033[0;36m"
white = "\033[0;37m"
bright_black = "\033[0;90m"
bright_red = "\033[0;91m"
bright_green = "\033[0;92m"
bright_yellow = "\033[0;93m"
bright_blue = "\033[0;94m"
bright_magenta = "\033[0;95m"
bright_cyan = "\033[0;96m"
bright_white = "\033[0;97m"
print(black + "Hello world")
print(red + "Hello world")
print(green + "Hello world")
print(blue + "Hello world")
print(yellow + "Hello world")
print(magenta + "Hello world")
print(cyan + "Hello world")
print(bright_black + "Hello world")
print(bright_red + "Hello world")
print(bright_green + "Hello world")
print(bright_blue + "Hello world")
print(bright_cyan + "Hello world")
print(bright_magenta + "Hello world")
print(bright_yellow + "Hello world")