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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import Tkinter, tkFont
class Application(Tkinter.Frame):
def __init__(self, master=None):
Tkinter.Frame.__init__(self, master, background="grey")
self.policemenu=tkFont.Font(self, size=9, family='Arial')
# creation de la barre de menu:
self.barremenu = Tkinter.Menu(self.master)
# représentation des items du menu "Fichier" sous forme de liste:
self.itemmenu=[
["Ouvrir", "Ctrl+O"],
["Fermer", "Ctrl+W"],
["Enregistrer", "Ctrl+S"],
["Quitter", "Alt+X"]
]
items=self.ajusteitems(self.itemmenu)
# creation du menu "Fichier"
self.fichier = Tkinter.Menu(self.barremenu, tearoff=0, font=self.policemenu)
self.barremenu.add_cascade(label="Fichier",menu=self.fichier)
self.fichier.add_command(label=items[0], command=self.ouvrir)
self.fichier.add_command(label=items[1], command=self.fermer)
self.fichier.add_command(label=items[2], command=self.enregistrer)
self.fichier.add_separator()
self.fichier.add_command(label=items[3], command=self.quitter)
# représentation des items du menu "Aide" sous forme de liste:
self.itemmenu=[
["Manuel", "F1"],
["A propos", ""]
]
items=self.ajusteitems(self.itemmenu)
# creation du menu "Aide"
self.aide = Tkinter.Menu(self.barremenu, tearoff=0, font=self.policemenu)
self.barremenu.add_cascade(label="Aide",menu=self.aide)
self.aide.add_command(label=items[0], command = self.manuel)
self.aide.add_command(label=items[1], command = self.apropos)
# afficher le menu
self.master.config(menu=self.barremenu)
def ajusteitems(self, itemmenu):
# Calcul de la longueur maxi en pixels des items du menu fichier:
lg=0
for i1, i2 in itemmenu:
lg1=self.policemenu.measure(i1)
lg2=self.policemenu.measure(i2)
if lg1+lg2>lg:
lg=lg1+lg2
esp=self.policemenu.measure(" ") # = nb de pixels d'un espace
lg=lg+2*esp # ajout de 2 espaces
# Ajustement des espaces pour que les commandes clavier soient calées à droite
lch=[]
for i1, i2 in self.itemmenu:
lg1=self.policemenu.measure(i1)
lg2=self.policemenu.measure(i2)
n=(lg-lg1-lg2)/esp
lch.append(i1 + " "*n + i2)
return lch
def ouvrir(self): print "Ouvrir"
def fermer(self): print "fermer"
def enregistrer(self): print "enregistrer"
def quitter(self): self.master.destroy()
def manuel(self): print "manuel"
def apropos(self): print "apropos"
#############################################################################
fen=Tkinter.Tk()
fen.title("Ma fenêtre")
app=Application(fen)
fen.geometry("%dx%d%+d%+d" % (300,300,100,100))
fen.mainloop() |
Partager