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 menus déroulants

La pluspart des interfaces graphiques que vous connaissez sont équipées de menus déroulants. Nous allons voir dans cet exemple comment en ajouter avec TKinter.

Tout d'abord, voici l'exemple :

In [1]:
from tkinter import *

root=Tk()
root.geometry("200x50")

def chtitre(choix):
    root.title(choix)

def chcolor(choix):
    root.tk_setPalette(choix)
    
# Creation de la barre de menu:
menu1 = Menu(root)

# Creation du sous-menu fichier:
fichier = Menu(menu1, tearoff=0)

# Nomme "Fichier" l'entete a la racine du menu "fichier":
menu1.add_cascade(label="Fichier",menu=fichier)

# Inscrit "Quitter" dans ce menu et l'associe a la commande gestionnaire
fichier.add_command(label="Quitter", command=root.destroy)

# Creation du sous-menu cascad:
cascad = Menu(menu1, tearoff=0)
menu1.add_cascade(label="Cascade",menu=cascad)

# Creation du sous-menu "Titre" (de cascad)
titre = Menu(cascad, tearoff=0)
cascad.add_cascade(label="Titre",menu=titre)
titre.add_command(label="Menu Demo", command=lambda : chtitre('Menu Demo'))
titre.add_command(label="Test", command=lambda : chtitre('Test'))

# Creation du sous-menu "Couleur" (de cascad)
color = Menu(cascad,tearoff=0)
cascad.add_cascade(label="Couleur",menu=color)
color.add_command(label="bleu", command=lambda : chcolor('blue'))
color.add_command(label="rouge", command=lambda : chcolor('red'))

# Affiche le menu
root.config(menu=menu1)
root.mainloop()

L’argument tearoff=0 permet de rendre le menu non détachable

Remarquez la présence du lambda dans l’appel de la fonction lambda : chcolor(’blue’). Un simple chcolor(’blue’) ne marcherait pas car la fonction à appeler par le menu ne doit pas contenir de paramètres. Vous avez ici une astuce permettant de passer outre cette contrainte.

Pour le reste, lire attentivement les commentaires dans le code. Vous apprendrez à manipuler les deux commandes principales :

  • add_cascade pour ajouter un sous-menu
  • add_command pour ajouter une commande appelant une fonction
In [ ]: