# Partie IX

## **<span style="color: rgb(55, 190, 140);">Mise en couleur dans le terminal avec Rich</span>**

### <span style="color: rgb(115, 100, 100);">Pourquoi améliorer l'affichage dans un terminal ?</span>

Lorsque notre station de jardin renvoie des données météo (température, humidité, pression…), il est utile d'avoir un affichage **lisible** et **coloré** pour mieux distinguer les différentes mesures. Jusqu'ici, nous utilisions des **codes ANSI** pour ajouter un peu de couleur dans le terminal.

Mais pour un rendu plus **propre**, **lisible**, **personnalisable** et **moderne**, la bibliothèque rich est une excellente alternative.

### <span style="color: rgb(115, 100, 100);">Couleurs ANSI vs Rich</span>

<table border="1" id="bkmrk-%F0%9F%A7%B1-ansi-%28codes-couleu" style="border-collapse: collapse; width: 100%; height: 178.8px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">**🧱 ANSI (codes couleurs bruts)**</td><td class="align-center" style="height: 29.8px;">**🌈 Rich (interface haut niveau)**</td></tr></thead><tbody><tr style="height: 29.8px;"><td>Utilise des codes comme `\\033\[91m`</td><td>Utilise des noms lisibles : `“red”`, `“green”`, `“cyan”`…</td></tr><tr style="height: 29.8px;"><td>Peu de contrôle sur le style</td><td>Affichage centré, aligné, stylisé facilement</td></tr><tr style="height: 29.8px;"><td>Difficile à maintenir et à lire</td><td>Code clair, moderne, accessible</td></tr><tr style="height: 29.8px;"><td>8 couleurs de base</td><td>Plus de 140 couleurs disponibles</td></tr><tr style="height: 29.8px;"><td>Pas d'affichage enrichi</td><td>Icônes, tableaux, mise en page possible</td></tr></tbody></table>

### <span style="color: rgb(115, 100, 100);">Liste de couleurs Rich utiles</span>

Voici quelques couleurs bien contrastées à utiliser dans un terminal (parmi les 140 disponibles) :

- red
- green
- blue
- yellow
- magenta
- cyan
- white
- black
- orange1
- violet
- deep\_sky\_blue1
- spring\_green2
- dark\_orange3
- turquoise2
- light\_salmon1ark\_orange3
- turquoise2
- light\_salmon1
- chartreuse2
- sky\_blue1
- gold3
- plum4
- aquamarine1
- medium\_violet\_red
- khaki1
- grey50

⚠️ Certaines couleurs ne sont visibles correctement que sur les terminaux qui supportent le mode 256 couleurs.

### <span style="color: rgb(115, 100, 100);">Installation de la bibliothèque Rich</span>

```bash
pip install rich
```

### <span style="color: rgb(115, 100, 100);">Initialisation de Rich</span>

```python
from rich.console import Console
from rich.text import Text
```

- **Console** est l'outil de base de la bibliothèque **Rich**. C’est lui qui gère l’affichage dans le terminal.
- **Text** permet de **styliser dynamiquement** des portions de texte dans une même ligne (**gras**, *italique*, <span style="text-decoration: underline;">souligné</span>…).

#### <span style="color: rgb(110, 115, 50);">Création de l'objet console :</span>

```python
console = Console()
```

Cette ligne permet de créer un objet console qui va gérer l'affichage dans le terminal. C’est avec cet objet qu’on peut utiliser toutes les fonctions de rich.

### <span style="color: rgb(115, 100, 100);">Affichage des données</span>

```python
# Importation des bibliothèques permettant de gérer couleurs et mise en page
from rich.console import Console
from rich.text import Text

# Déclaration de l'objet console pour gérer les couleurs et mise en page
console = Console()

console.print(f"[bold cyan]Date et heure :[/bold cyan] {date_heure}")
console.print(f"[bold red]Température :[/bold red] {round(temperature, 1)}°C")
console.print(f"[bold blue]Humidité :[/bold blue] {round(humidity, 1)}%")
console.print(f"[bold magenta]Point de rosée :[/bold magenta] {round(point_de_rosee, 1)}°C")
console.print(f"[bold yellow]Humidex :[/bold yellow] {round(humidex, 1)}")
console.print(f"[bold green]Pression atmosphérique :[/bold green] {round(pression, 2)} hPa")
```

- console.print(…) : méthode principale pour **afficher du texte enrichi** (couleur, gras, emoji…).
- \[bold red\]Température :\[/bold red\] : indique que le mot “**Température** :” sera **affiché en rouge gras**.

[![couleur-rich.png](https://doc.arles-linux.org//uploads/images/gallery/2025-08/scaled-1680-/as5I4BhIWVTgpzO0-couleur-rich.png)](https://doc.arles-linux.org//uploads/images/gallery/2025-08/as5I4BhIWVTgpzO0-couleur-rich.png)