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

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
, 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: 15.3%
 
Posts: 37572
Images: 10521
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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 de spécialité NSI ( projets, tutos ...)
:favorite: NumWork, Python : démineur, snake, tétris
User avatar
cent20VIP++
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 89.8%
 
Posts: 661
Images: 60
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):
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: 53.5%
 
Posts: 5576
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):

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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 57.4%
 
Posts: 13405
Images: 1093
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Online

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: 15.3%
 
Posts: 37572
Images: 10521
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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: 53.5%
 
Posts: 5576
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):

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.
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 57.4%
 
Posts: 13405
Images: 1093
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
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 19 guests

-
Search
-
Social
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.2 pour les Nspire CX II
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
1234
-
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.
660 utilisateurs:
>631 invités
>23 membres
>6 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)