π
<-
Chat plein-écran
[^]

print en couleur via codes CSI sur TI-83 Premium CE Python

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

print en couleur via codes CSI sur TI-83 Premium CE Python

Message non lude critor » 05 Juin 2021, 12:16

Le langage Python de la TI-83 Premium CE Edition Python et les modèles équivalents (TI-84 Plus CE-T Python Edition en Europe, TI-84 Plus CE Python en Amérique du Nord) te permettait d'afficher du texte en couleur grâce à ti_graphics, sa bibliothèque de tracé par pixels.

Code: Tout sélectionner
from ti_graphics import drawString, setColor
from ti_system import disp_wait

setColor((255, 0, 255))
drawString("Hallo TI", 0, 30)
disp_wait()


Contrairement à celles de bibliothèques concurrentes, les primitives de ti_graphics ne gèrent pas de couleur de fond.

On peut toutefois construire de quoi contourner la chose, en traçant un rectangle plein sur lequel on écrit ensuite le texte :
Code: Tout sélectionner
from ti_graphics import drawString, fillRect, setColor
from ti_system import disp_wait

def myDrawString(s, x, y, cf, cb=None):
  if cb:
    setColor(cb)
    fillRect(x, y, 10 * len(s), 15)
  setColor(cf)
  drawString(s, x, y)   

myDrawString("Hallo TI", 0, 30, (255, 255, 0), (0, 0, 255))
disp_wait()

L'affichage de texte couleur via ti_graphics a toutefois divers inconvénients selon ce que tu fais :
  • l'affichage est ici superposé à celui de la console, mais avec un système de positionnement totalement différent, ce qui impliquera quelques acrobaties si tu souhaites le faire coexister avec des print()
  • l'affichage superposé à la console sera perdu à chaque rafraîchissement de celle-ci, d'où la nécessité de mettre le script en pause juste après ces affichages via un appel disp_wait()
  • dans tous les cas obtenir 1 affichage de texte couleur nécessite bien plus de lignes qu'un simple print() et donc autant de choses à comprendre, ce qui peut rebuter les débutants


Et bien formidable découverte de commandblockguy, les TI-83 Premium CE Edition Python et compatibles gèrent des commandes CSI directement dans la console Python ! :D

Les commandes CSI pour Control Sequence Introducer (plus d'infos ici), partie de ce qu'on appelle en français séquences d'échappement ANSI, sont des codes directement intégrés aux chaînes de caractère et permettant de contrôler le formatage du texte leur faisant suite dans une console ou un terminal.

C'est fantastique, les 2 affichages couleur précédents peuvent maintenant être réalisés dans la console en seulement 2 lignes, rien à importer ! :bj:
Code: Tout sélectionner
print("\x1B[5mHallo TI")
print("\x1B[3;4mHallo TI")

L'affichage de texte couleur avec la simplicité d'un print(), un formidable avantage exclusif à ta TI-83 Premium CE ! :D

13971La calculatrice semble gérer 16 codes de commandes CSI permettant de régler 16 couleurs différentes, aussi bien pour la couleur de texte que la couleur de fond. Les codes CSI correspondant vont de 0 à 15 et pour 256 combinaisons possibles, illustrées ci-contre dans l'ordre par le script ci-dessous :
Code: Tout sélectionner
def color_str(s, cf, cb=7):
  return "\x1B[" + str(cf) + ";" + str(cb) + "m" + s

n = 16
s = ""

for cb in range(n):
  for cf in range(n):
    s += color_str("X", cf, cb)
  if cb % 2: s += "\n"

Au-delà de l'ordre, cela ne correspond pas exactement à la palette de couleurs utilisables en langage TI-Basic.

En effet elles ne sont qu'au nombre de 15 alors qu'ici nous en avons 16, la couleur rajoutée semblant être le cyan.

Attention, cela ne fonctionne que sur les TI-83 Premium CE Edition Python et modèles similaires.

Cela ne marche pas sur les modèles plus anciens avec l'adaptateur TI-Python externe, ni sur les TI-Nspire CX II. :#non#:
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: print en couleur via codes CSI sur TI-83 Premium CE Pyth

Message non lude cent20 » 05 Juin 2021, 13:17

L'idée n'est pas mauvaise mais il est dommage de voir les scripts python ainsi se fragmenter.

C'était déjà bien compliqué avec les couches graphiques toutes différentes, et pas toutes complètes. Il ne faudrait pas revenir à la situation antérieur, pré-python, ou chaque constructeur avait son propre langage.

En tout cas, si de bons scripts sortent et exploitent intelligemment cette fonctionnalité, le rendu sur une autre calculatrice sera très décevant.

Image
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1007
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: print en couleur via codes CSI sur TI-83 Premium CE Pyth

Message non lude Bisam » 05 Juin 2021, 14:53

On peut noter un effet pervers non désiré : les >>> introductifs des lignes de commande suivant celle du "print" spécial conservent les paramètres de couleur et de fond du précédent affichage.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: print en couleur via codes CSI sur TI-83 Premium CE Pyth

Message non lude Adriweb » 05 Juin 2021, 14:59

cent20 a écrit:L'idée n'est pas mauvaise mais il est dommage de voir les scripts python ainsi se fragmenter.

C'était déjà bien compliqué avec les couches graphiques toutes différentes, et pas toutes complètes. Il ne faudrait pas revenir à la situation antérieur, pré-python, ou chaque constructeur avait son propre langage.

En tout cas, si de bons scripts sortent et exploitent intelligemment cette fonctionnalité, le rendu sur une autre calculatrice sera très décevant.

Image

Qui propose une PR à epsilon pour au moins gérer les couleurs? :D


Bisam a écrit:On peut noter un effet pervers non désiré : les >>> introductifs des lignes de commande suivant celle du "print" spécial conservent les paramètres de couleur et de fond du précédent affichage.

Il suffit de mettre un reset a la fin du print, a priori
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80%
 
Messages: 14599
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: print en couleur via codes CSI sur TI-83 Premium CE Pyth

Message non lude critor » 05 Juin 2021, 21:00

Bisam a écrit:On peut noter un effet pervers non désiré : les >>> introductifs des lignes de commande suivant celle du "print" spécial conservent les paramètres de couleur et de fond du précédent affichage.


Il suffit juste de rerégler en noir sur fond blanc à la fin de tout affichage précédant un retour à la console :
print("\x1B[3;4mHallo TI\x1B[0;7m")
Image

On peut même mettre ça dans la fonction color_str(), et comme ça il n'y a même plus à s'en occuper.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: print en couleur via codes CSI sur TI-83 Premium CE Pyth

Message non lude Bisam » 06 Juin 2021, 09:49

Même si c'est plutôt chouette de pouvoir faire écrire en couleur, je trouve tout de même que ce formatage va totalement à l'encontre du Zen Python...

PEP 20 a écrit:Préfère :
- la beauté à la laideur,
- l'explicite à l'implicite,
- le simple au complexe
- et le complexe au compliqué,
- le déroulé à l'imbriqué,
- l'aéré au compact.
Prends en compte la lisibilité.
Les cas particuliers ne le sont jamais assez pour violer les règles.[...]


Je suis sans doute un peu trop puriste.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: print en couleur via codes CSI sur TI-83 Premium CE Pyth

Message non lude Adriweb » 06 Juin 2021, 13:59

Ca devient parfaitement lisible et aéré si tu utilises des constantes genre red + "hello" ou ("{} hello" % red) ou des wrappers. La le code inline c'est juste pour montrer.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80%
 
Messages: 14599
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb


Retourner vers News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 21 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
836 utilisateurs:
>810 invités
>21 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)