

Dies ist ein Projekt zur Entwicklung eines Python -PYPI -Pakets, das nicht nur die Farbtextausgabe behandelt, sondern auch Farbeffekte wie Gradienten auf Ihren Text anwenden kann.
Dieses Paket verwendet die ANSI Escape Sequence Select Graphics -Darstellungen, um Farbe und Stil auf Text und Hintergründe anzuwenden. Wie unterscheidet sich dieses Paket von den anderen?
Unterschiedliche Terminals machen die Farben unterschiedlich, einige Terminals machen ANSI -Escape -Sequenzen überhaupt nicht, was zu einem großen Textzusuch führt. Mit Ansi Escape -Codes herumzuspielen ist genau das, es spielt.
Einige grundlegende Farben, die sparsam verwendet werden, um unterschiedliche Protokollierungsstufen hervorzuheben, sind in Ordnung, aber Sie können in ernsthaften Projekten nicht mit Farben weggetragen werden.
Zuerst importieren 4 -Bit- und 8 -Bit -Codes von colour_fx.four_bit bzw. colour_fx.eight_bit . Sowohl 8 -Bit- als auch 4 -Bit -Codes können jedoch ohne Probleme zusammen verwendet werden.
Die Objekte in diesen Modulen liefern nur den Wert, der in einer ANSI -Escape -Sequenz verwendet werden soll. Sie müssen mit compile_ansi_code in eine ANSI -Escape -Sequenz kompiliert werden, die mit from colour_fx import compile_ansi_code importiert werden kann.
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 } !" )
8 -Bit -Farben sind im Aussehen zwischen verschiedenen Klemmen viel unvorhersehbarer als 4 -Bit -Farben.
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 } " )
Dies hat die Erstellung dieses Pakets inspiriert, um Gradienten auf große Textblöcke anzuwenden.
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 )
Verwenden Sie keine Windows, installieren Sie Python 3.9 und verwenden Sie dann source ./tooling && venv-setup um sich ein Venv-Setup mit Python 3.9 zu erhalten (unsere am niedrigsten unterstützte Python-Version)
Verwenden Sie den Befehl lint-cfx , um FININT-Arbeiten und test-cfx zu testen.
Verwenden Sie eine Filiale in Ihrem Namen, um Feature -Arbeiten zu erledigen, und senden Sie dann eine Pull -Anfrage.