Code source de pydiderotlibs.entree

# -*- coding: utf-8 -*-

import tkinter as tk

print("""
Merci d'utiliser la librairie entree du module pydiderotlibs.\n
N'hésitez pas à consulter la documentation en ligne:\n
https://pydiderotlibs.rtfd.io/librairies/entree.html
""")


[docs]def demander_texte(titre="Entrez un texte", message=None): """ Ouvre une fenêtre avec le titre "titre" et attend une chaine de caractères. Arguments: titre (str, optionnel): Le titre de la fenetre (``"Entrez un texte"`` par défaut). message (str, optionnel): Si présent, on ajoute un champ de texte contenant ``message``. Returns: La chaine de caractère (type ``str``) entrée par l'utilisateur. """ def _sauver_valeur(event=None): """ Si entree est non vide, la fonction sauve sa valeur dans value et ferme la fenetre """ if entree.get(): value.set(entree.get()) fenetre.destroy() fenetre = tk.Tk() fenetre.title(titre) # Si message est entré, on ajoute un champ message. # permet par exemple l'affichage d'érreurs. if message is not None: label = tk.Label(fenetre, text=message) label.pack() value = tk.StringVar() entree = tk.Entry(fenetre, textvariable=value, width=50) entree.pack() # la touche retour appelle _sauver_valeur entree.bind('<Key-Return>', _sauver_valeur) # Donne le focus à la fenetre et au widget entree # Peut-etre focus_set serait plus poli? # http://tkinter.fdex.eu/doc/uwm.html#focus_set # http://tkinter.fdex.eu/doc/uwm.html#focus_force entree.focus_force() bouton = tk.Button(fenetre, text='Valider', command=_sauver_valeur) bouton.pack() fenetre.mainloop() return value.get()
[docs]def demander_reel(titre="Entrez un nombre réel"): """Ouvre une fenetre et attend un nombre réel. Si ce n'est pas un nombre réel, on repose la question en ajoutant un message d'erreur. Arguments: titre (str, optionnel): Titre de la fenetre (``"Entrez un nombre réel"`` par défaut). Returns: Le nombre réel entré par l'utilisateur (type ``float``). """ message = None while True: texte = demander_texte(titre, message) # Si texte est vide, l'utilisateur à fermé la fenetre if not texte: return # Tente de convertir en float try: reel = float(texte) except ValueError: message = "La donnée est incorrecte. Ce n'est pas un nombre" continue else: break return reel
[docs]def demander_entier(titre="Entrez un nombre entier"): """Ouvre une fenetre et attend un nombre entier. Si ce n'est pas un nombre entier, on repose la question en ajoutant un message d'erreur. Arguments: titre (str, optionnel): Titre de la fenêtre (``"Entrez un nombre entier"`` par défaut). Returns: Le nombre entier entré par l'utilisateur (type ``int``). """ message = None while True: texte = demander_texte(titre, message) # si texte est vide, cela veut dire que l'utilisateur à fermé la fenêtre if not texte: return # on essaye de convertir en int try: entier = int(texte) except ValueError: message = "La donnée est incorrecte. Ce n'est pas un nombre ENTIER" continue else: break return entier