# Créé par apatura, le 14/03/2015 en Python 3.2 from tkinter import * def supprimer(event): w=event.widget # w contiendra le widget (ici un canevas)lié à l'évènement (ici un clic gauche) info = w.grid_info() i,j=int(info["row"]),int(info["column"] ) # permet de récupérer les indices de la case de la grille qui contient w w.delete(r[i][j]) # on supprime le dessin ici un rond qui se trouve dans le tableau r aux indices i,j du canevas w print(i,j) # instruction qui peut être supprimée : ne sert que pour voir le contenu de i et de j" def creer(event): #identique à la précédente sauf l'avant dernière ligne w=event.widget # l'évènement est un clic droit info = w.grid_info() i,j=int(info["row"]),int(info["column"]) w.delete(r[i][j]) r[i][j]=w.create_oval(15,15,40,40,outline='red',fill='black') # création d'un rond dans le canevas w qui sera mis dans le tableau r # aux indices i,j print(i,j) # instruction qui peut être supprimée : ne sert que pour voir le contenu de i et de j" t=list(range(3)) r=list(range(3)) f=Tk() #création de la fenêtre for i in range(3): t[i]=list(range(4)) r[i]=list(range(4)) for j in range(4): # création de 2 tableaux (3;4) et d'une grille (3;4) t[i][j]=Canvas(f,height=50,width=50) # création d'un canevas mis dans le tableau t aux indices i,j t[i][j].grid(row=i,column=j) # création de la case i,j de la grille dans laquelle on y met le canevas précédent r[i][j]=t[i][j].create_oval(15,15,40,40,outline='red',fill='orange') # création d'un rond dans le canevas précédent mis dans le tableau # r aux indices i,j t[i][j].create_rectangle(5,5,50,50) #dessine un rectangle d'à peu près la dimension du canevas dans ce canevas t[i][j].bind("",supprimer) # un clic gauche sur ce canevas a pour effet d'exécuter la fonction supprimer t[i][j].bind("",creer) # un clic droit sur ce canevas a pour effet d'exécuter la fonction creer f.mainloop()