π
<-
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

Unread postby critor » 05 Jun 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: Select all
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: Select all
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: Select all
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: Select all
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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.4%
 
Posts: 41498
Images: 14640
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

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

Unread postby cent20 » 05 Jun 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
User avatar
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 46.1%
 
Posts: 1013
Images: 64
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: nsi_xyz

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

Unread postby Bisam » 05 Jun 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.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5665
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

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

Unread postby Adriweb » 05 Jun 2021, 14:59

cent20 wrote: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 wrote: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...)
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 80.2%
 
Posts: 14616
Images: 1218
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

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

Unread postby critor » 05 Jun 2021, 21:00

Bisam wrote: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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.4%
 
Posts: 41498
Images: 14640
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

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

Unread postby Bisam » 06 Jun 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 wrote: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.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5665
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

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

Unread postby Adriweb » 06 Jun 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...)
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 80.2%
 
Posts: 14616
Images: 1218
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb


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

Who is online

Users browsing this forum: No registered users and 244 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1557 utilisateurs:
>1525 invités
>27 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)