1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
   | import tkinter as tk
root = tk.Tk()
root.geometry("200x100")
 
bar_menu = tk.Menu(root)
root.config(menu=bar_menu)
 
feuil = True       # Variable mémorisant le mode : Édition (feuil = False) ou Feuilletage (feuil = True)
 
# Fonctions activées par les menus
def bascul_mod(menu):
    global feuil                                           # Rendre la variable accessible
    if feuil == True:                                      # Selon le mode en cours, grise le menu correspondant
        index_1 = 1
        index_2 = 0
    else:
        index_1 = 0
        index_2 = 1
    menu.entryconfigure(index_1, state="disabled")         # Fixer l'état du paramètre "state=" dans l'entrée choisie du menu
    menu.entryconfigure(index_2, state="active")
    feuil = not feuil                                      # Basculer le booléen pour changer de mode
    affich_mod()                                           # Afficher le mode dans lequel on est
 
def affich_mod():                                          # Fonction pour afficher le mode en cours
    global feuil
    if feuil == True:
        print('Mode "Feuilletage" activé')
    else:
        print('Mode "Édition" activé')
 
# Création du menu
def menu():
    global feuil
    global edition
    # Menu "Fichier"
    fichier = tk.Menu(bar_menu, tearoff=0)                 # Ne pas permettre au menu d'être décroché
    fichier.add_command(label="Fermer", command=quit)
    bar_menu.add_cascade(label="Fichier", menu=fichier)
 
    # Menu "Edition"
    edition = tk.Menu(bar_menu, tearoff=0)
    edition.add_command(label="Mode feuilletage", command=lambda: bascul_mod(edition), state="disable")     # ou "disabled"
    edition.add_command(label="Mode édition", command=lambda: bascul_mod(edition), state="active")
    print()
    bar_menu.add_cascade(label="Édition", menu=edition)
 
    affich_mod()
 
menu()
 
bout_basc = tk.Button(root, text="Changer de mode", command=lambda: bascul_mod(edition))
bout_basc.pack()
 
root.mainloop() | 
Partager