colour_fx
v2.0.0


这个项目旨在开发Python PYPI软件包,不仅可以处理颜色文本输出,还可以在文本中应用颜色效果,例如渐变。
该软件包使用ANSI Escape序列选择图形演奏,以便将颜色和样式应用于文本和背景。这个软件包与其他软件包有何不同?
不同的终端呈现不同的颜色,有些终端甚至根本没有渲染ANSI逃脱序列,从而导致了大量的文本。使用ANSI逃生代码播放,它正在播放。
一些基本的颜色很少用来突出不同的记录水平,但是您无法在严肃的项目中带走颜色。
首先,有4个位和8个位代码可用,分别从colour_fx.four_bit和colour_fx.eight_bit导入。但是,可以一起使用8位和4个位代码。
这些模块中的对象仅提供在ANSI逃生序列中要使用的值。他们将需要使用compile_ansi_code将它们编译为ANSI逃生序列,该compile_ansi_code可以from colour_fx import compile_ansi_code 。
from colour_fx import compile_ansi_code
from colour_fx . four_bit import Colour , Style
blinking_red_on_yellow = compile_ansi_code (
# add as many ANSI values as you like and receive a single ANSI
# escape sequence to handle all effects
Colour . RED ,
Colour . YELLOW . bright_background ,
Style . BLINK
)
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
print ( F"HELLO, { blinking_red_on_yellow } WORLD { RESET } !" )
与4位颜色相比,不同终端之间的8位颜色在外观上更加不可预测。
SimpleColour from colour_fx import compile_ansi_code
from colour_fx . eight_bit import SimpleColour
red_on_yellow = compile_ansi_code (
# add as many ANSI values as you like and receive a single ANSI
# escape sequence to handle all effects
SimpleColour . RED ,
SimpleColour . YELLOW . bright_background ,
)
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
print ( F"HELLO, { red_on_yellow } WORLD { RESET } !" )
Grey from colour_fx import compile_ansi_code
from colour_fx . eight_bit import Grey
# Grey has 24 different shades available, here we use 12 to apply a
# gradient to the text "HELLO, WORLD!"
grey_array = [
Grey . AA ,
Grey . AC ,
Grey . AE ,
Grey . BB ,
Grey . BD ,
Grey . BF ,
Grey . CA ,
Grey . CC ,
Grey . CE ,
Grey . DB ,
Grey . DD ,
Grey . DF ,
]
# converting shades in grey_array to background colours and
# reversing order
grey_back = [ grey . background for grey in reversed ( grey_array )]
# Compiling the values in grey_array and grey_back into codes
g = [
compile_ansi_code (
grey_array [ idx ],
grey_back [ idx ],
)
for idx in range ( len ( grey_array ))
]
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
# Accessing the individual ANSI escape codes in the list of codes to
# create a gradient
print (
F" { g [ 0 ] } H { g [ 1 ] } E { g [ 2 ] } L { g [ 3 ] } L { g [ 4 ] } O { g [ 5 ] } ,"
F" { g [ 6 ] } W { g [ 7 ] } O { g [ 8 ] } R { g [ 9 ] } L { g [ 10 ] } D { g [ 11 ] } ! { RESET } "
)
RGB from colour_fx import compile_ansi_code
from colour_fx . eight_bit import RGB
# RGB is different to the rest in that you need to pass values in and
# initialise the object rather than treating as an Enum
# RGB values should be an integer between 0 and 5 inclusive
spectrum = [
RGB ( 5 , 0 , 0 ). foreground ,
RGB ( 3 , 2 , 0 ). foreground ,
RGB ( 1 , 4 , 0 ). foreground ,
RGB ( 0 , 4 , 1 ). foreground ,
RGB ( 0 , 2 , 3 ). foreground ,
RGB ( 0 , 0 , 5 ). foreground ,
]
# compiling spectrum into ANSI escape sequences while adding a
# white background
s = [
compile_ansi_code ( spec , RGB ( 5 , 5 , 5 ). background )
for spec in spectrum
]
# an empty call to compile_ansi_code() gives the reset ANSI escape
# sequence which resets the way text is rendered
RESET = compile_ansi_code ()
# Accessing individual elements of s allows a gradient
print ( F" { s [ 0 ] } HE { s [ 1 ] } LL { s [ 2 ] } O, { s [ 3 ] } WO { s [ 4 ] } RL { s [ 5 ] } D! { RESET } " )
现在,这是激发此软件包的创建,能够将梯度应用于大型文本的原因。
from colour_fx . four_bit import Colour
from colour_fx . effects . gradients import create_vertical_gradient_field
from colour_fx . effects import apply_ansi_field
rainbow_vals = [
[ Colour . RED ],
[ Colour . RED . bright ],
[ Colour . YELLOW . bright ],
[ Colour . GREEN ],
[ Colour . BLUE ],
[ Colour . BLUE . bright ],
[ Colour . MAGENTA ],
]
text_to_render = (
" ::: ::: :::::::::: ::: ::: :::::::: ::: n "
" :+: :+: :+: :+: :+: :+: :+: :+: n "
" +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ n "
" +#++:++#++ +#++:++# +#+ +#+ +#+ +:+ +#+ n "
" +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ n "
" #+# #+# #+# #+# #+# #+# #+# n "
" ### ### ########## ########## ########## ######## ### n "
)
output_field = create_vertical_gradient_field (
template = text_to_render ,
ansi_vals = rainbow_vals ,
indent = 3 ,
step = 1 ,
)
output_text = apply_ansi_field (
text = text_to_render ,
field = output_field
)
print ( output_text )
不要使用Windows,请安装Python 3.9,然后使用source ./tooling && venv-setup为自己设置了使用Python 3.9设置的VENV(我们最低支持的Python版本)
使用命令lint-cfx进行棉绒工作,并使用命令test-cfx进行测试工作。
使用名称中的分支进行功能工作,然后提交拉动请求。