#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from tkinter import *

# on définit une fermeture
def fermeture (valeur):
    # on définit ici la vraie fonction qui fait le traitement attendu;
    # comme cette fonction sera appelée par le bouton cliquable
    # elle ne prend AUCUN ARGUMENT dans sa définition;
    # en revanche, elle va se servir des arguments stockés dans
    # la fermeture (c'est tout l'intérêt du truc);
    def mon_traitement ():
        # on exploite l'argument stocké par la fermeture
        resultat.set("Vous avez cliqué sur le bouton '{}'".format(valeur))
    # end def
    # retourne une fonction en résultat
    return mon_traitement
# end def

# on crée la fenêtre principale
fenetre = Tk()
fenetre.title("Rigolure")
fenetre.resizable(width=False, height=False)

# on ajoute des widgets
resultat = StringVar()
resultat.set("Cliquez sur un bouton au choix")
Label(fenetre, textvariable=resultat).pack(padx=5, pady=10)
Label(fenetre, text="Adieu...").pack(anchor=W, padx=5)

# on crée un conteneur à boutons (pour la présentation)
frame = Frame(fenetre)
frame.pack(pady=10)

# on ajoute les boutons utilisant la fermeture
Button(
    frame,
    text="Veaux",
    command=fermeture('Veaux'),
).pack(side=LEFT, padx=5)

Button(
    frame,
    text="Vaches",
    command=fermeture('Vaches'),
).pack(side=LEFT, padx=5)

Button(
    frame,
    text="Cochons",
    command=fermeture('Cochons'),
).pack(side=LEFT, padx=5)

# on ajoute un bouton quitter
Button(
    fenetre,
    text="Quitter",
    command=fenetre.destroy,
).pack(side=RIGHT, padx=5, pady=5)

# on lance la boucle principale
fenetre.mainloop()
