| 12
 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
 
 | # -*- coding : cp1252 -*- 
from Tkinter import* 
'''ce tuto n'est pas facile mais très intéressant...''' 
class BarreDesMenus(Frame): 
   """C'est la barre des menus, dans cette classe on définira ce qu'il ya dedans""" 
 
   #Initialisation de la class : 
   def __init__(self, boss = None): #boss représente une fenetre maitre, soi = le nom des objets de la classe 
 
      Frame.__init__(self, borderwidth = 2) #taille du bord de la frame = fenetre 
      #Donc c'est une bande, avec deux pixels d'écart des bords (autres) 
      #une frame ressemble à Tk avec d'autres propriétés 
 
      #Bon on fait un menu <Menu 1> : 
      BoutonMenu1 = Menubutton(self, text = "<Menu 1>") 
      #Menubutton est un type de bouton. Quand on clique dessus, on pourrait avoir un menu 
      BoutonMenu1.pack(side = LEFT) #la méthode pack permet des "endroits" de position.. 
 
      #On définit ce qu'il y a dans le menu 1 
      menu1 = Menu(BoutonMenu1) #on dit que c'est un menu sortant de tel bouton 
      menu1.add_command(label = "Commande1", command = boss.commande1) 
      #boss est le "maitre" (fenetre maitresse), vous verrez plus loin dans le code les instructions viennent d'elles 
      menu1.add_command(label = "Commande 2", command = boss.commande2) 
      BoutonMenu1.configure(menu = menu1) #on dit que le bouton doit dérouler ce menu 
 
      #On fait un menu <Menu 2> 
      BoutonMenu2 = Menubutton(self, text = "<Menu 2>") 
      #on définit ce qu'il y a dans le menu 2 
      menu2 = Menu(BoutonMenu2) 
      menu2.add_command(label = "Effacer tout", command = boss.effacer) 
      menu2.add_separator() #ben une ligne qui sépare les deux et on va dans l'ordre.... 
      menu2.add_command(label = "Quitter", command = boss.quit) 
      #boss.quit signifie qu'on quitte la fenetre maitresse (donc on quitte tout vu que la fenetre maitresse contient tout) 
      BoutonMenu2.configure(menu = menu2) 
      BoutonMenu2.pack(side = LEFT, padx = '5') 
      #On fait tout ca dans l'ordre, vu que le premier vient d'etre définit, le prog met le bouton a coté 
      #mais il va coller l'autre bouton donc il faut un écart horizontal ==> padx = '5' pixels 
def cercle(canevas, x, y, r):  #cette fonction n'est pas dans une classe.... 
   """dessin d'un cercle de rayon <r> en <x,y> dans le canevas <can>""" 
   canevas.create_oval(x-r, y-r, x+r, y+r) #une création d'un bo cercle 
 
class Application(Frame): 
   """ Application principale """ 
   def __init__ (self, boss = None): 
      Frame.__init__(self) 
      self.master.title("Un tuto sur les menus") #c'est l'objet maitre (master) 
 
      BarreMenus = BarreDesMenus(self) #objet qui dépend de notre première classe 
      BarreMenus.pack() #ca veut dire qu'on la crée, on la fait apparaitre 
 
      #on crée un canevas dans lequel on pourra travailler (graphiquement, on pourrait faire un truc sans canevas) 
      self.canevas = Canvas(self, bg = 'light grey', height = 300, 
                          width = 300, borderwidth = 2) 
      self.canevas.pack() 
      self.pack() 
 
      #Définition des 3 commandes citées plus haut dans la classe "BarreDesMenus" 
   def commande1(self): 
      self.canevas.create_rectangle(80, 100, 180, 200, fill = "red") #c'est plutot un carré 
      #Pour dessiner un rectangle il faut donner les coord du point en haut à gauche et du point en bas à droite 
      #noublions pas, les x augmentent vers la droite ET LES Y AUGMENTENT VERS LE BAS (en python) 
      self.canevas.create_text(10, 10, anchor =NW, text ='Un ptit texte', #methode anchor, nordwest 
                        font=('Arial', 20, 'bold italic'), fill ='blue') 
      # la méthode anchor permet une ancre dans une certaine zone du canevas. 10,10 est la coordonnée d'un point dans cette zone 
   def commande2(self): 
      cercle(self.canevas, 125, 125, 20) 
      cercle(self.canevas, 120, 122, 4) 
      cercle(self.canevas, 130, 122, 4) #un visage très moche 
      cercle(self.canevas, 125, 130, 6) 
      #ben voilà quoi des cercles... 
   def effacer(self): 
      """Ca effacera tout ce qu'il y a dans le canevas""" 
      self.canevas.delete(ALL) 
appli = Application() 
appli.mainloop() #n'oublions pas ... |