FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 13, nombre de questions : 210, dernière mise à jour : 15 août 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireGUITkinter / Tix / PmwTkinterMenu (3)
précédent sommaire suivant
 

le widget Menu peut être utiliser pour créer une barre de menu dans une fenêtre. Pour cela, vous devez tout d'abord définir un premier Menu de parent une fenêtre ( mainmenu = Tk.Menu(root) ) puis associé ce menu à la fenêtre ( root.config(menu = mainmenu) ).

Pour ajouter des menus à la barre de menu, vous créerez de nouveaux Menu ayant pour parent le premier menu crée ( menuExample = Tk.Menu(mainmenu) ) et sera insérée à la barre par la fonction add_cascade ( mainmenu.add_cascade(label = "Exemple", menu=menuExample) ). La fonction add_cascade(**options) peut recevoir une liste de paramètres où les principaux sont label pour le titre du menu fils et menu représentant l'indentifiant du menu fils en question.

Pour ajouter des options à un menu fils, vous utilisez la fonction add_command(**options) qui peut recevoir une liste de paramètres et où les principaux sont label pour le titre de l'option et command qui représente la fonction associée au clic sur l'option.

Code python :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding: cp1252 -*- 
import Tkinter as Tk 
import tkMessageBox 
  
root = Tk.Tk()   ## Fenêtre principale 
  
def Affiche(): tkMessageBox.showinfo("Exemple d'un Menu Tkinter") 
def About(): tkMessageBox.showinfo("A propos", "Version 1.0") 
  
mainmenu = Tk.Menu(root)  ## Barre de menu 
menuExample = Tk.Menu(mainmenu)  ## Menu fils menuExample 
menuExample.add_command(label="Affiche", command=Affiche)  ## Ajout d'une option au menu fils menuFile 
menuExample.add_command(label="Quitter", command=root.quit) 
  
menuHelp = Tk.Menu(mainmenu) ## Menu Fils 
menuHelp.add_command(label="A propos", command=About) 
  
mainmenu.add_cascade(label = "Exemple", menu=menuExample) 
mainmenu.add_cascade(label = "Aide", menu=menuHelp) 
  
root.config(menu = mainmenu) 
  
root.mainloop()

Mis à jour le 29 août 2006 Guigui_

La méthode add_separator() permet de rajouter une ligne de séparation dans un menu.

Code python :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding: cp1252 -*- 
import Tkinter as Tk 
import tkMessageBox 
  
root = Tk.Tk()  
  
def Affiche(): tkMessageBox.showinfo("Exemple d'un Menu Tkinter") 
def About(): tkMessageBox.showinfo("A propos", "Version 1.0") 
  
mainmenu = Tk.Menu(root)   
menuExample = Tk.Menu(mainmenu) 
menuExample.add_command(label="Affiche", command=Affiche)   
menuExample.add_separator() ## Ajout d'une ligne séparatrice 
menuExample.add_command(label="Quitter", command=root.quit) 
  
mainmenu.add_cascade(label = "Exemple", menu = menuExample) 
root.config(menu = mainmenu) 
  
root.mainloop()

Mis à jour le 29 août 2006 THE_VIP

Le widget Menu admet un paramètre booléen tearoff qui indique si le menu en question peut être détaché de son parent ou non; par défaut, tearoff = 1 et le menu est détachable. Un menu détachable est caractérisé par la présence d'une ligne pointillée en son début.

Code python :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Tkinter as Tk 
  
root = Tk.Tk() 
  
mainmenu = Tk.Menu(root) 
menunondetachable = Tk.Menu(mainmenu, tearoff = 0) 
menudetachable = Tk.Menu(mainmenu, tearoff = 1)  
mainmenu.add_cascade(label="Menu1", menu = menunondetachable) 
mainmenu.add_cascade(label="Menu2", menu = menudetachable) 
menunondetachable.add_command(label="Quit", command = fenetre.quit) 
menudetachable.add_command(label="Quit", command = fenetre.quit) 
  
root.config(menu = mainmenu) 
root.mainloop ()

Mis à jour le 2 janvier 2007 THE_VIP

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula