Act-44 : Python / tkinter
Interface Utilisateur tkinter : cahier des charges⚓
Avec tkinter, je souhaite donner à mes étudiants une démonstration simple en python.
Un champ (contrôle permettant la saisie de caractères alphanumériques) Nom qui va saisir le nom d'une personne.
Un contrôle de type liste qui permette de choisir la civilité de la personne "Mr ou Mme ou Vide".
On ajoutera un bouton nommé OK qui exécutera le code selon les directives ci-dessous : concaténer une chaîne composée de "Bonjour ", la civilité sauf si "vide à été choisi", suivie du Nom en majuscule.
La valeur de la variable composée sera affichée dans un label (texte non modifiable)
Le code détaillé⚓
import tkinter as tk
from tkinter import ttk
def saluer():
nom = nom_entree.get().upper() # Récupère le nom et le convertit en majuscules
civilite = civilites_combo.get()
if civilite == "Vide": # Si "Vide" est sélectionné, ne pas inclure la civilité
message = "Bonjour " + nom
else:
message = "Bonjour " + civilite + " " + nom
message_label.config(text=message) # Met à jour le texte du label avec le message
# Création de la fenêtre principale
fenetre = tk.Tk()
fenetre.title('Démonstration tkinter')
# Définition et placement du champ de saisie pour le nom
nom_label = ttk.Label(fenetre, text="Nom :")
nom_label.grid(column=0, row=0, sticky=tk.W, padx=5, pady=5)
nom_entree = ttk.Entry(fenetre)
nom_entree.grid(column=1, row=0, sticky=tk.EW, padx=5, pady=5)
# Définition et placement du contrôle de liste pour la civilité
civilites_label = ttk.Label(fenetre, text="Civilité :")
civilites_label.grid(column=0, row=1, sticky=tk.W, padx=5, pady=5)
civilites_combo = ttk.Combobox(fenetre, values=["Mr", "Mme", "Vide"])
civilites_combo.grid(column=1, row=1, sticky=tk.EW, padx=5, pady=5)
civilites_combo.current(2) # Définit "Vide" comme valeur par défaut
# Définition et placement du bouton OK
ok_bouton = ttk.Button(fenetre, text="OK", command=saluer)
ok_bouton.grid(column=0, row=2, columnspan=2, pady=5)
# Définition et placement du label d'affichage
message_label = ttk.Label(fenetre, text="")
message_label.grid(column=0, row=3, columnspan=2, sticky=tk.N, pady=5)
# Configuration de la gestion du redimensionnement de la grille
fenetre.columnconfigure(1, weight=1)
fenetre.rowconfigure(3, weight=1)
fenetre.mainloop()
Explications rapides⚓
Ce script commence par importer les modules nécessaires : tkinter pour l'UI et ttk pour les widgets stylés.
Après avoir défini la fonction qui construit le message de salutation saluer(), il crée l'interface utilisateur avec un champ de saisie pour le nom, une liste déroulante pour la civilité, et un bouton qui, lorsqu'il est cliqué, appelle la fonction saluer().
La fonction met ensuite à jour un label avec le message de salutation personnalisé.