@ epicgamer300065, вот реальное полное решение IDLE, которое работало для меня, используя Python 3.8.1 на win10pro, но оно НЕ работает в терминале.
Это из idlecolors , и так как ваш доступ ограничен, я включил в него полный модуль, необходимый idlecolors.py
, чтобы ваше удовольствие от копирования / вставки могло обойти вашу невозможность установки.
Как видите, единственными зависимостями являются модули sys
и random
, но random
необходим только для функции randcol()
, без которой вы могли бы жить, если бы пришлось.
Вот idlecolors.py
:
import sys
import random
# This will only work in IDLE, it won't work from a command prompt
try:
shell_connect = sys.stdout.shell
except AttributeError:
print("idlecolors highlighting only works with IDLE")
exit()
# Map the colour strings to IDLE highlighting
USE_CUSTOM_COLORS = False # Change to True if you want to use custom colours
global colormap
if USE_CUSTOM_COLORS:
colormap = {"red": "COMMENT",
"orange": "KEYWORD",
"green": "STRING",
"blue": "stdout",
"purple": "BUILTIN",
"black": "SYNC",
"brown": "console",
"user1": "DEFINITION",
"user2": "sel",
"user3": "hit",
"user4": "ERROR",
"user5": "stderr"}
else:
colormap = {"red": "COMMENT",
"orange": "KEYWORD",
"green": "STRING",
"blue": "stdout",
"purple": "BUILTIN",
"black": "SYNC",
"brown": "console"}
# ---------------------------
# Functions
# ---------------------------
# Like the print() function but will allow you to print colours
def printc(text, end="\n"):
# Parse the text provided to find {text:color} and replace with the colour. Any text not encompassed in braces
# will be printed as black by default.
buff = ""
for char in text:
if char == "{":
# Write current buffer in black and clear
shell_connect.write(buff, colormap["black"])
buff = ""
elif char == "}":
# Write current buffer in color specified and clear
tag_write = buff.split(":")
shell_connect.write(tag_write[0], tag_write[1])
buff = ""
else:
# Add this char to the buffer
buff += char
# Write the chosen end character (defaults to newline like print)
sys.stdout.write( end )
# Individual colour functions
def red(text):
return "{"+ text + ":" + colormap["red"] + "}"
def orange(text):
return "{"+ text + ":" + colormap["orange"] + "}"
def green(text):
return "{"+ text + ":" + colormap["green"] + "}"
def blue(text):
return "{"+ text + ":" + colormap["blue"] + "}"
def purple(text):
return "{"+ text + ":" + colormap["purple"] + "}"
def black(text):
return "{"+ text + ":" + colormap["black"] + "}"
def brown(text):
return "{"+ text + ":" + colormap["brown"] + "}"
def randcol(text):
color = random.choice(list(colormap.keys()))
return "{"+ text + ":" + colormap[color] + "}"
# User defined colours
def user1(text):
return "{"+ text + ":" + colormap["user1"] + "}"
def user2(text):
return "{"+ text + ":" + colormap["user2"] + "}"
def user3(text):
return "{"+ text + ":" + colormap["user3"] + "}"
def user4(text):
return "{"+ text + ":" + colormap["user4"] + "}"
def user5(text):
return "{"+ text + ":" + colormap["user5"] + "}"
А вот как вы бы это использовали:
from idlecolors import *
printc( red("Red text") )
printc( "If you add " + red("red") + " to " + blue("blue") + ", you get " + purple("purple") )
# Print a line in a random colour
printc( randcol("This is a random colour") )
# Print each word in a random colour
mytext = "This is a random piece of text which I want to print in random colours"
mytext = mytext.split(" ")
for word in mytext:
printc(randcol(word), end=" ")
Доступные цвета: red()
, orange()
, green()
, blue()
, purple()
, black()
, brown()
, и вы можете использовать randcol()
для случайного цвета из этого выбора.