Python : Pythondialog
De www.yakakliker.org
Installation
sudo apt install dialog
pip install pythondialog
Exemple
import json
from dialog import Dialog
# Initialisation de l'objet Dialog
# autowidgetsize=True permet d'ajuster la taille selon le contenu
d = Dialog(dialog="dialog", autowidgetsize=True)
FICHIER = "mes_invites.json"
def charger_donnees():
try:
with open(FICHIER, "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return []
def sauvegarder_donnees(liste):
with open(FICHIER, "w", encoding="utf-8") as f:
json.dump(liste, f, indent=4, ensure_ascii=False)
def main():
invites = charger_donnees()
while True:
# Affichage du menu principal
# Format : (Code_Retour, Tag_Selectionné)
code, tag = d.menu("Gestionnaire d'Invités",
choices=[("1", "Voir les invités"),
("2", "Ajouter un invité"),
("3", "Supprimer un invité"),
("4", "Quitter")])
if code == d.CANCEL or tag == "4":
break
if tag == "1":
# Construction de la chaîne de caractères pour l'affichage
texte = "\n".join([f"• {i['nom']} ({i['age']} ans)" for i in invites])
d.msgbox(texte if texte else "La liste est vide.", title="Liste des invités")
elif tag == "2":
# Saisie du nom
code_nom, nom = d.inputbox("Entrez le nom de l'invité :")
if code_nom == d.OK and nom:
# Saisie de l'âge
code_age, age = d.inputbox(f"Âge de {nom} :")
if code_age == d.OK and age.isdigit():
invites.append({"nom": nom, "age": int(age)})
sauvegarder_donnees(invites)
d.msgbox("Invité ajouté !", title="Succès")
else:
d.msgbox("Erreur : Âge invalide.", title="Erreur")
elif tag == "3":
# Création d'une liste de choix pour la suppression
choix_suppr = [(str(i), f"{inv['nom']} ({inv['age']} ans)")
for i, inv in enumerate(invites)]
if choix_suppr:
code_s, tag_s = d.menu("Choisissez l'invité à supprimer :", choices=choix_suppr)
if code_s == d.OK:
index = int(tag_s)
invites.pop(index)
sauvegarder_donnees(invites)
else:
d.msgbox("Personne à supprimer.")
if __name__ == "__main__":
main()
Analyse
d.menu(): Affiche une liste de choix. Vous devez fournir une liste de tuples(Tag, Description). C'est le "Tag" qui est renvoyé par la fonction.d.msgbox(): Une simple boîte d'information avec un bouton "OK".d.inputbox(): Une zone de saisie. Elle renvoie un code (OK/CANCEL) et la chaîne de caractères tapée.- Navigation : Vous utilisez les flèches pour le menu, et la touche Tabulation pour passer du menu aux boutons "OK/Annuler".