import tkinter as tk
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.title("Menu Vertical avec Pages")
# Créer un cadre pour le menu
menu_frame = tk.Frame(self)
menu_frame.pack(side="left", fill="y")
# Créer un cadre pour le contenu des pages
self.container = tk.Frame(self)
self.container.pack(side="right", fill="both", expand=True)
# Ajouter des boutons pour les éléments du menu
btn_menu = tk.Button(menu_frame, text="Menu", command=lambda:
self.show_frame(MenuPage))
btn_menu.pack(fill="x")
btn_home = tk.Button(menu_frame, text="Home", command=lambda:
self.show_frame(HomePage))
btn_home.pack(fill="x")
btn_settings = tk.Button(menu_frame, text="Settings", command=lambda:
self.show_frame(SettingsPage))
btn_settings.pack(fill="x")
# Dictionnaire pour stocker les cadres des pages
self.frames = {}
for F in (MenuPage, HomePage, SettingsPage):
page_name = F.__name__
frame = F(parent=self.container, controller=self)
self.frames[page_name] = frame
frame.grid(row=0, column=0, sticky="nsew")
# Afficher la page d'accueil par défaut
self.show_frame(HomePage)
def show_frame(self, page_class):
'''Afficher une page pour le nom donné'''
frame = self.frames[page_class.__name__]
frame.tkraise()
class MenuPage(tk.Frame):
def __init__(self, parent, controller):
super().__init__(parent)
self.controller = controller
label = tk.Label(self, text="C'est la page du Menu")
label.pack(side="top", fill="x", pady=10)
class HomePage(tk.Frame):
def __init__(self, parent, controller):
super().__init__(parent)
self.controller = controller
label = tk.Label(self, text="C'est la page d'Accueil")
label.pack(side="top", fill="x", pady=10)
class SettingsPage(tk.Frame):
def __init__(self, parent, controller):
super().__init__(parent)
self.controller = controller
label = tk.Label(self, text="C'est la page des Paramètres")
label.pack(side="top", fill="x", pady=10)
if __name__ == "__main__":
app = Application()
app.mainloop()