CodeGym /Cours /Python SELF FR /Travail avec les étiquettes et les zones de texte

Travail avec les étiquettes et les zones de texte

Python SELF FR
Niveau 49 , Leçon 3
Disponible

1. Widget "Étiquette" (Label)

Aujourd'hui, on continue avec cet outil génial. Cette fois, on va parler des étiquettes (Label) et des zones de texte (Text). Oui, exactement ce qu'il faut pour que ton application puisse non seulement gérer des tâches complexes, mais aussi partager ces incroyables accomplissements avec l'utilisateur, que ce soit via de courts messages ou de grands volumes de texte.

Avant de plonger dans nos aventures avec les zones de texte, commençons par quelque chose de plus simple : les étiquettes. Une étiquette dans Tkinter, c'est un petit widget convivial qui permet d'afficher des infos statiques. Un peu comme un post-it sur le frigo, mais dans ton app. Peut être utilisé pour des titres, des descriptions, et même des citations inspirantes.

Créer et styliser des étiquettes

Créer une étiquette dans Tkinter, c'est plus simple que d'apprendre une nouvelle syntaxe de langage de programmation (souviens-toi comme ça faisait mal la première fois ?). Voici un exemple :

Python

import tkinter as tk

# Créer la fenêtre principale
root = tk.Tk()
root.title("Mon premier label")

# Créer une étiquette
label = tk.Label(root, text="Salut, monde !", font=("Arial", 14))
label.pack()

# Lancer la boucle principale des événements
root.mainloop()
  

Ici, on a créé une étiquette qui dit "Salut, monde !". Comme tu vois, on peut configurer la police et la taille du texte, ce qui la rend super flexible. Tu peux choisir toi-même le style, la taille et même la couleur pour que ça colle à ton design.

2. Widget "Zone de texte" (Text)

Maintenant qu'on connaît les étiquettes, passons au niveau supérieur et parlons des zones de texte. Les zones de texte (Text), c'est comme un bloc-notes intégré à ton app. Elles permettent d'afficher et d'éditer de grands volumes de texte. Pratique si tu veux que l'utilisateur interagisse avec beaucoup de texte ou juste pour montrer combien de code tu as écrit ce week-end.

Utiliser les zones de texte

Voici un exemple pour créer une zone de texte et y ajouter du contenu :

Python

import tkinter as tk

# Créer la fenêtre principale
root = tk.Tk()
root.title("Zone de texte")

# Créer une zone de texte
text = tk.Text(root, height=10, width=40)
text.pack()

# Ajouter du contenu
text.insert(tk.END, "Il y a bien longtemps, dans une galaxie lointaine...\n")
text.insert(tk.END, "Ton texte ici...")

# Lancer la boucle principale des événements
root.mainloop()
  

Comme tu peux le voir, on peut insérer du texte dans une zone avec la méthode insert. Le paramètre tk.END indique que le texte doit être ajouté à la fin du texte existant.

Configurer la police et les styles de texte

Pour les deux types de widgets, on peut personnaliser les styles. Cela inclut les polices, tailles, couleurs et bien plus. Voici un exemple pour les étiquettes et zones de texte :

Python

label = tk.Label(root, text="Salut, monde !", font=("Courier", 16, "bold"), fg="blue")
label.pack()

text.tag_configure("highlight", font=("Verdana", 12), foreground="red")
text.insert(tk.END, "Ce texte sera mis en évidence", "highlight")
  

Ici, on a changé la police et la couleur du texte de l'étiquette, et utilisé des balises pour styliser une partie du texte dans la zone. Note l'utilisation de tag_configure pour la zone de texte : ça permet de créer une "balise" qu'on peut appliquer à une portion de texte. Un outil puissant pour gérer le style de certaines parties du texte.

3. Intégrer dans une application

Maintenant qu'on sait créer et styliser des étiquettes et des zones de texte, voyons un exemple réel dans une appli. Imagine qu'on crée un éditeur de texte simple. Cet éditeur peut afficher et éditer des fichiers texte.

Python

import tkinter as tk
from tkinter import filedialog

# Fonction pour ouvrir un fichier
def open_file():
    file_path = filedialog.askopenfilename()
    if file_path:
        with open(file_path, 'r') as file:
            content = file.read()
            text.delete(1.0, tk.END)
            text.insert(tk.END, content)

# Créer la fenêtre principale
root = tk.Tk()
root.title("Éditeur de texte")

# Créer les widgets
label = tk.Label(root, text="Éditeur de texte", font=("Arial", 16))
label.pack()

text = tk.Text(root, wrap='word', font=("Arial", 12))
text.pack(expand=1, fill='both')

open_button = tk.Button(root, text="Ouvrir un fichier", command=open_file)
open_button.pack()

# Lancer la boucle principale des événements
root.mainloop()
  

Dans cet exemple, on a créé une application simple qui permet à l'utilisateur d'ouvrir des fichiers texte et d'en afficher le contenu dans une zone de texte. En utilisant le widget Button, on rattache la commande d'ouverture de fichier à une fonction open_file, qui utilise une boîte de dialogue filedialog pour sélectionner un fichier. C'est beaucoup plus sympa que juste afficher "Hello World", non ?

4. Gérer les modifications du texte

Quand tu travailles avec du texte, il peut être nécessaire de réagir aux changements : que ce soit pour afficher le texte dans la console (ou un fichier) ou pour mettre à jour d'autres parties de l'interface. Tkinter offre différentes options pour suivre les modifications du texte.

Cependant, si tu veux quelque chose de plus spécialisé, comme chercher ou remplacer du texte selon un critère, tu devras écrire toi-même les fonctions nécessaires. Pour commencer, tu peux utiliser les méthodes get() et delete() pour extraire et modifier le texte dans le widget.

Maintenant, tu as tous les outils pour créer une mini-appli qui non seulement affiche des infos, mais permet aussi à l'utilisateur d'interagir avec. J'espère que la leçon sur les étiquettes et zones de texte était non seulement utile mais aussi fun. La prochaine fois que tu vois une zone de texte dans une app, souviens-toi que c'est sûrement fait avec Tkinter, et qu'une étiquette n'est pas juste un texte, mais une vraie philosophie d'interaction utilisateur.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION