# Créé par apatura, le 08/05/2014 en Python 3.2 from tkinter import * from math import * # variables globales: x=50 # coordonnées du sommet haut gauche du tableau qui sera affiché dans le canevas y=50 n=10 # taille du tableau taille =40 # taille d'une case du tableau ini=0 # valeur initiale qui sera changée lor de la saisie tab=list(range(n)) # tableau initial à double entrées de taille n for i in range(n): tab[i]=list(range(n)) for j in range(n): tab[i][j]=0 def affiche(): # affiche le tableau tab dans le canevas et les valeurs de ce qu'il contient c.delete(ALL) for i in range(n): for j in range(n): c.create_rectangle(x+taille*i,y+taille*j,x+taille*(i+1),y+taille*(j+1),outline='black',fill='') c.create_text(x+taille*i+taille/2,y+taille*j+taille/2,font="Arial 10 bold ",text=tab[i][j]) def creer(event): # selon l'endroit du clic met dans tab[i][j] qui correspond à la case où on a cliqué # la valeur ini (il faut donc associé à un clic un élément de tab) # puis affiche le tableau ainsi changé global tab a,b=event.x,event.y i=floor((a-x)/taille) j=floor((b-y)/taille) if i>=0 and i=0: tab[i][j]=ini affiche() def nombre(event): # permet de saisir la nouvelle valeur de ini , fonction liée au widget entree global ini ini= int(entree.get()) f=Tk() c=Canvas(f,height=500,width=500,bg='ivory') c.bind("",creer) affiche() c.pack(side=TOP) b=Button(f,text="Quitter",command=f.quit) # on pourrait mettre simplement destroy() ce qui éviterait de le mettre après mainloop() b.pack() champ_label = Label (f, text = 'Saisissez un nombre , validez puis cliquez sur une case du tableau') champ_label.pack ( padx = 10, pady = 10) entree=Entry(f,background='white',width=8) entree.bind("",nombre) entree.pack() f.mainloop() f.destroy()