XD blog

blog page

ligne de commande, python, tkinter


2014-03-16 Laisser l'utilisateur définir ses propres paramètres

Chaque année, à la fin de l'année scolaire, je dois exécuter les projets de mes étudiants. Assez souvent, je me retrouve à répondre à des questions simples et parfois nombreuses : nom du premier joueur, nom du second joueur, niveau de jeu... Bien souvent, la première exécution ne fonctionne pas, la plupart du temps à cause d'un nom absolu de fichier qui ne trouve pas à l'endroit attendu. Une fois corrigé, je relance le programme et je dois de nouveau répondre à tous les questions.

Je pourrais leur imposer une façon de faire, mais lorsqu'un projet s'étire sur plusieurs mois, n'importe quel directive insérée dans un mail finit aux oubliettes. Je pourrais leur demander de modifier leur programme mais lorsque je suis face au problème à une heure très matinale, quelques heures avant leur soutenance, j'ai quelques doutes sur la réussite de l'entrerprise. Reste peut-être la possibilité de coder une fonction qui peut peut-être devenir aussi utile pour eux que pour moi.

La fonction que je propose ouvre une fenêtre tkinter sur une liste de paramètres avec des valeurs par défaut. A la seconde exécution, la fonction récupère les valeurs utilisées lors de la précédente exécution. Simple.

from pyquickhelper import open_window_params

p = { "joueur1": "manuel", "joueur2":"ordinateur", "niveau":3 }
r = open_window_params(p, help_string="joueur1 ou 2 à choisir entre manuel et ordinateur," \
                        " niveau entre 1 et 5")
print(r)  # affiche {'niveau': 5, 'joueur2': 'ordinateur', 'joueur1': 'manuel'}

La fonction affiche la fenêtre suivante :

Lorsque le bouton cancel est pressé, le résultat contient la paire clé:valeur '__cancel__': True. Il est même possible en appuyant sur les boutons Up ou Down de retrouver des valeurs de paramètres utilisées bien avant. Pour l'utiliser, il suffit d'utiliser le module pyquickhelper.


<-- -->

Xavier Dupré