Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > parabola

Reply
Thread Tools

parabola

 
 
Shi Mu
Guest
Posts: n/a
 
      11-08-2005
Is there any sample code to draw parabola using Tkinter?
 
Reply With Quote
 
 
 
 
Salvatore
Guest
Posts: n/a
 
      11-08-2005
Here is an old piece of code I wrote when begining Python

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',col rep='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,t ag=('repere','grid'))

self.create_line(0,posy,w,posy,fill=self.colgrid,t ag=('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,ta g=('repere','axe'))

self.create_line(0,posy,w,posy,fill=self.colrep,ta g=('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()
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',col rep='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,t ag=('repere','grid'))

self.create_line(0,posy,w,posy,fill=self.colgrid,t ag=('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,ta g=('repere','axe'))

self.create_line(0,posy,w,posy,fill=self.colrep,ta g=('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()

 
Reply With Quote
 
 
 
 
Salvatore
Guest
Posts: n/a
 
      11-08-2005
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',col rep='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,t ag=('repere','grid'))

self.create_line(0,posy,w,posy,fill=self.colgrid,t ag=('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,ta g=('repere','axe'))

self.create_line(0,posy,w,posy,fill=self.colrep,ta g=('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()

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments