Correction exercice Tkinter avec classe 02
Correction exercice Tkinter avec classe 02
-
Objectifs
- Etre capable de programmer des applications tkinter avec des classes
-
Rappel
- Ce projet a pour but de découvrir la programmation en Python utilisant une interface graphique.
- Il existe plusieurs modules Python permettant d’exploiter les interfaces graphiques.
- Le plus simple est le module tkinter présent lors de l’installation du langage Python.
- On utilisera l’environnement idle (version 3.8.5) pour coder en Python.
- L’objectif de ce TP est de vous amener à développer un interface graphique en Python, basée sur le package Tkinter.
- Cette bibliothèque est un pont (une façade) vers l’interface graphique Tk, qui était l’interface d’un autre langage de script connu nommé Tcl.
- Au bout de ce TP, vous aurez une calculatrice simple.
- Une autre façon de faire de la mise en page est d’utiliser la méthode
grid
plutôt que pack ou place. Cette fois-ci, on place les composants dans un conteneur simplement en précisant à quelle ligne et à quelle colonne on les place. - Le widget Entry est un widget Tkinter standard utilisé pour saisir ou afficher une seule ligne de texte.
- Le texte est affiché dans une police de caractère « Font » et de taille 20. (font=(« Courier », 20)).
- Pour récupérer le texte actuel de l’entrée, utilisez la méthode get :
s = e.get ()
- Vous pouvez également lier le widget d’entrée à une instance de StringVar et définir ou obtenir le texte de l’entrée via cette variable:
v = StringVar ()
e = Entrée (maître, variable text = v)
e.pack ()- Vous pouvez choisir entre les deux méthodes suivantes pour définir le texte d’un Entrywidget. Pour les exemples, supposons la bibliothèque importée import tkinter as tket la fenêtre racine root = tk.Tk().
-
Utiliser delete et insert
-
- Widget Entry fournit des méthodes
delete
etinsert
qui peuvent être utilisées pour définir son texte sur une nouvelle valeur. - Tout d’ abord, vous devrez enlever tout ancien, ancien texte de Entry avec
delete
qui a besoin des positions où commencer et terminer la suppression. - Puisque nous voulons supprimer l’ancien texte complet, nous commençons 0et finissons à l’endroit où se trouve actuellement la fin.
- Nous pouvons accéder à cette valeur via END. Ensuite, le Entry est vide et nous pouvons insérer new_text à la position 0.
entry = tk.Entry(root) new_text = "Example text" entry.delete(0, tk.END) entry.insert(0, new_text)
- Widget Entry fournit des méthodes
-
Utilisation StringVar
-
- Vous devez créer un nouvel objet StringVar appelé entry_text dans l’exemple.
- Ensuite, chaque fois que vous changez entry_text avec set, le texte apparaîtra automatiquement dans le widget Entry.
En outre, votre widget Entry doit être créé avec un argument de mot-clé textvariable.
entry_text = tk.StringVar() entry = tk.Entry(root, textvariable=entry_text) new_text = "Example text" entry_text.set(new_text)
-
Exemple
-
Exercice 04
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Correction
-
Exercice 02
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Solution
-
Exercice 03
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Solution
import tkinter as tk
def button_1_click():
# define new text (you can modify this to your needs!)
new_text = "Button 1 clicked!"
# delete content from position 0 to end
entry.delete(0, tk.END)
# insert new_text at position 0
entry.insert(0, new_text)
def button_2_click():
# define new text (you can modify this to your needs!)
new_text = "Button 2 clicked!"
# set connected text variable to new_text
entry_text.set(new_text)
root = tk.Tk()
entry_text = tk.StringVar()
entry = tk.Entry(root, textvariable=entry_text)
button_1 = tk.Button(root, text="Button 1", command=button_1_click)
button_2 = tk.Button(root, text="Button 2", command=button_2_click)
entry.pack(side=tk.TOP)
button_1.pack(side=tk.LEFT)
button_2.pack(side=tk.LEFT)
root.mainloop()