Here is an old piece of code I wrote to test Tkinter from Tkinter import *
import string import Numeric from Canvas import Line import math class Tableau(Canvas): def __init__(self,master=None,size=400,col='black',colrep='red',colgrid='grey'): Canvas.__init__(self,master,width=size,height=size,bg=col,highlightthickness=0) self.pack(expand=1,fill=BOTH) self.width_table = 0; self.height_table = 0 self.nl = 20.0 self.bind("<Configure>",self.Redraw) self.colrep = colrep self.colgrid = colgrid def GetSize(self,event): self.width_table = event.width self.height_table = event.height def SetBgColor(self,color): self['bg'] = color def ChangeColGrid(self,col): self.colgrid = col self.itemconfig('grid',fill=col) def ChangeColAxe(self,col): self.colrep = col self.itemconfig('repere',fill=col) def Redraw(self,event): self.delete('all') self.TraceAxe() self.UpdateGraphe() self.update() def Redessine(self): self.delete('all') self.TraceAxe() #self.UpdateGraphe() self.update() def TraceAxe(self): self.delete('all') w , h = self.winfo_width(),self.winfo_height() #Trace Grille posx=0;posy=0 intervallex = w/self.nl intervalley = h/self.nl posx=intervallex;posy=intervalley for i in range(0,self.nl): self.create_line(posx,0,posx,h,fill=self.colgrid,tag=('repere','grid')) self.create_line(0,posy,w,posy,fill=self.colgrid,tag=('repere','grid')) posy += intervalley posx += intervallex #Trace des axes posx = w/2.0; posy = h/2.0 self.create_line(posx,0,posx,h,fill=self.colrep,tag=('repere','axe')) self.create_line(0,posy,w,posy,fill=self.colrep,tag=('repere','axe')) def UpdateGraphe(self): for f in F.keys(): try: name,color = F[f] Function(f,nom=name,col=color) except: Function(f) class Function: def __init__(self,fonction = '',nom='affine',col='yellow',epaiss = 1): w , h = t.winfo_width(),t.winfo_height() self.valeur = eval('lambda x: '+fonction) self.x = Numeric.arange(-200.0,200.0) self.y = 20*self.valeur(self.x/20.0) res = Numeric.arange(0.0,800.0) res.shape = (400,2) res[:,0] = self.x*w/400.0 + w/2.0 res[:,1] = -self.y*h/400.0 + h/2.0 Line(t,res.tolist(),fill=col,tag=nom,width=epaiss) def expression(exp): return eval('lambda x: '+exp) if __name__ == '__main__': print "test" sin = Numeric.sin F = {'x*x':('carre','green'),'2*sin(x)':('sin','blue'),'x*x*x':('cube','yellow')} t = Tableau() t.delete('grid') t.mainloop() -- http://mail.python.org/mailman/listinfo/python-list