- English: This page isn't translated to English.
Exercices
Consignes
- Ne pas de faire aider par des IA ou genAI
- Utiliser les composants
ttk
autant que possible
Série 1
- Créer une fenêtre qui affiche un bouton dont le texte est un nombre alétoire entre 1 et 100. Chaque fois qu'on clique sur le bouton, le nombre aléatoire change.
- Créer une fenêtre qui affiche un bouton "Quitter" et un texte editable. Gérer le comportement suivant quand on clique sur le bouton "Quitter":
- Si on n'a pas modifié le texte, la fenêtre se ferme,
- Si on a modifié le texte, une boîte de dialogue demande si on veut vraiment quitter. Si on répond "Oui", la fenêtre se ferme, sinon elle reste ouverte (voir astuce plus bas).
- Créer une fenêtre qui affiche un texte editable et les boutons "sauvegarder" et "charger". Gérer le comportement suivant:
- Quand on clique sur "sauvegarder", le texte est sauvegardé dans un fichier texte,
- Quand on clique sur "charger", le texte est chargé depuis le fichier texte et est affiché dans la zone éditable (voir astuce plus bas).
- Créer une fenêtre qui affiche deux textes editables et les boutons "sauvegarder" et "charger". Gérer le comportement suivant:
- Quand on clique sur "sauvegarder", le texte de la première zone éditable est sauvegardé dans un fichier texte. Le nom du fichier est déterminé par le texte de la deuxième zone éditable,
- Quand on clique sur "charger", le texte est chargé depuis le fichier texte et est affiché dans la zone éditable. Le nom du fichier est déterminé par le texte de la deuxième zone éditable.
Astuces
message box
import tkinter.messagebox as mb
anwser = mb.askyesno(title="Confirmer?", message="Voulez-vous quitter ?")
Sauvegarder et charger un fichier
def sauvegarder(texte):
with open("fichier.txt", "w") as f:
f.write(texte)
def charger():
with open("fichier.txt", "r") as f:
return f.read()
Afficher une image depuis un fichier avec tkinter
from tkinter import PhotoImage
img = PhotoImage(file="image.png")
label = Label(fenetre, image=img)
label.pack()
Solutions
Random number button
import random
from playsound import playsound
import tkinter as tk
from tkinter import ttk
window = tk.Tk()
window.geometry(200, 200)
button: ttk.Button = None
def get_rand_int_as_str() -> str:
r = random.randint(1, 100)
return str(r)
def change_label():
if button == None:
return
button.configure(text=get_rand_int_as_str())
button = ttk.Button(window, text=get_rand_int_as_str(), command=change_label)
button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
window.mainloop()
Confirm quit
import tkinter as tk
from tkinter import ttk
import tkinter.messagebox as mb
window = tk.Tk()
window.geometry("200x200")
entered_text = tk.StringVar()
textbox = ttk.Entry(window, textvariable=entered_text)
textbox.pack(pady=50)
def quit_app():
if len(entered_text.get()) == 0:
window.destroy()
return
anwser = mb.askyesno(title="Confirmer", message="Voulez-vous quitter ?")
if anwser:
window.destroy()
return
run_button = ttk.Button(window, text="Quit 👋", command=quit_app)
run_button.pack()
window.mainloop()
Série 2
- Créer une fenêtre qui affiche une image depuis un fichier.
- Créer une fenêtre qui affiche une zone de saisie de texte et un bouton. Quand l'utilisateur appuie sur le bouton, l'image dont le nom est définie par le zone de saisie est affichée en dessous.
- Avec la librairie playsound, créer une fenêtre qui joue un son quand on clique sur un bouton.
- Vous pouvez utiliser ce tuto pour vous aider
- Vous pouvez utiliser ce site pour trouver des sons ou télécharger cet exemple
- Si
pip install playsound
ne fonctionne pas, vous pouvez essayerpip install playsound@git+https://github.com/taconi/playsound
- Utiliser tkvideoplayer pour créer une fenêtre qui lit une vidéo.
Solutions
Play music
# importing required module
from playsound import playsound
import tkinter as tk
from tkinter import ttk
window = tk.Tk()
window.title("GeeksforGeeks sound player") # giving the title for our window
window.geometry("500x400")
# making function
def play():
playsound("sample-3s.mp3")
# title on the screen you can modify it
title = ttk.Label(
window,
text="Sample sound",
)
title.pack()
# making a button which trigger the function so sound can be playeed
play_button = ttk.Button(window, text="Play Song", command=play)
play_button.pack()
info = ttk.Label(window, text="Click on the button above to play song ").pack(pady=20)
window.mainloop()
Série 3
- En utilisant tkinter.scrolledtext Créer une application qui permet de saisir du texte, de le sauvegarder dans un fichier et de le charger.
- Créer une application qui permet de saisir du texte, de le sauvegarder dans un fichier et de le charger. Elle permet aussi de mémoriser la dernière modification et permet de la restaurer à l'aider du bouton "Annuler". Si la modification est restaurée, le bouton "Annuler" devient "Refaire" et permet de rétablir la modification.
- Modifier l'application pour mémoriser les 10 dernières modifications, le bouton "Annuler" permet de revenir en arrière et le bouton "Refaire" permet de revenir en avant. Le comportement devrait être similaire aux éditeurs de texte classiques.
- Associer les raccourcis clavier à chaque bouton. Par exemple,
Ctrl+S
pour sauvegarder,Ctrl+Z
pour annuler,Ctrl+Y
pour refaire, etc.