Afin de pouvoir personnaliser votre classeur sans détruire le classeur sur lequel travaille votre voisin, vous allez tout d'abord aller dans le menu File puis Make a copy.... Renommez le classeur en ajoutant votre nom à la fin du nom de fichier par exemple.

Les dialogues

Revenons sur la notion de boîtes de dialogue que nous avons brièvement rencontré au début de nos activités. Dans cet exemple, nous en verrons de différents type avec des situations illustrant leur utilisation.

Le programme suivant illustre l’utilisation de 3 types de boîtes de dialogue parmi les plus courantes. Il existe plusieurs boîtes de message :

  • les alertes (messagebox),
  • celles qui demandent une info (simpledialog),
  • celles qui permettent de choisir un fichier (filedialog)
In [ ]:
from tkinter import *
from tkinter.messagebox import *   # Les alertes
from tkinter.simpledialog import * # demande d'infos
from tkinter.filedialog import *   # dialogue fichiers

# Exemple avec messagebox
def bonjour():
    showinfo("Politesse","Bonjour tout le monde")
    info.config(text="T'as vu je suis poli!")

    # Exemple avec simpledialog
def motdepasse():
    passe=askstring("Sécurité", "Quel est le mot de passe?")
    info.config(text="Je connais ton mot de passe: "+passe)

    # Exemple avec filedialog pour ouvrir un fichier
def fichier():
    nom=askopenfilename()
    info.config(text="Alors tu veux ouvrir le fichier: "+nom+"?")

cadre=Tk()
cadre.title("Boîtes de message")

info=Label(cadre,text="Ici des informations en temps réel!",font="arial 20 bold")
info.pack()

bouton1=Button(cadre,text=" Formule de politesse !",width=20,font="arial 20 bold",
bg='yellow',fg='red',command=bonjour)
bouton1.pack()

bouton2=Button(cadre,text=" Mot de passe",width=20,font="arial 20 bold",
bg='yellow',fg='red',command=motdepasse)
bouton2.pack()

bouton3=Button(cadre,text=" Ouvrir Fichier",width=20,font="arial 20 bold",
bg='yellow',fg='red',command=fichier)
bouton3.pack()

cadre.mainloop()

Vous avez-vu avec quelle simplicité ces dialogues se manipulent. Pour chaque type de dialogue, voici les méyhodes les plus utiles :

  • Méthodes de messagebox : showinfo, showwarning, showerror, askquestion, askokcancel, askyesno, askretrycancel
  • Méthodes de simpledialog : askstring, askinteger and askfloat
  • Méthodes de filedialog : askopenfilename et asksaveasfilename

Dialogue de choix de couleur

Il existe un autre type de dialogue destiné à choisir une couleur. Voici comment il fonctionne :

In [ ]:
from tkinter import *
from tkinter.colorchooser import askcolor

# Affiche la fenetre de sélection de couleur du système
def Choix():
    result = askcolor(color="#FFEEDD", title = "Choix de couleur")
    # La réponse est un couple avec deux formats de codage :
    # ((R,G,B) , #Hexadecimal)
    print (result)

# Création de la fenetre proncipale
maFenetre = Tk()
maFenetre.title("Choix de couleur")
# Création des boutons
Button(maFenetre, text='Choisir', fg="darkgreen", command=Choix).pack(side=LEFT, padx=10)
Button(maFenetre, text='Quitter', command=maFenetre.destroy,fg="red").pack(side=LEFT, padx=10)

mainloop()

A vous de jouer

Reprendre l'application dessin réalisée précédemment et ajouter un bouton permettant de choisir la couleur avec laquelle vous allez dessiner.

Au moment de quitter, demander un message de confirmation avant de quitter.

Indication : pour récupérer la couleur sous forme exploitable par TKinter, vous exploiterez la réponde du dialogue sous la forme (R,V,B) avec une ligne du type :

couleur="#%02x%02x%02x" % (128, 192, 200)

Voici le résultat attendu :

In [ ]:
from tkinter import *
from tkinter.colorchooser import askcolor
from tkinter.messagebox import *

# Ecrivez votre code ici
In [ ]: