# # tkline.py # (c) Neil Gershenfeld 2/5/05 # animate sin(kx)/kx curve with Tkinter # from Tkinter import * from numpy import * import time SIZE = 500 NPTS = 100 KMIN = 0.0 KMAX = 25.0 k = 0 dk = .1 x = arange(-1.0,1.0,2.0/NPTS) + 1.0/NPTS xpath = SIZE*(x+1.0)/2.0 def paint(parent,canvas): global k, dk, x, xpath if ((k > KMAX) | (k < KMIN)): dk = -dk k += dk y = sin(k*x)/(k*x) ypath = SIZE - SIZE*(y+1.0)/2.0 path = ravel(transpose(concatenate(([xpath],[ypath]),0))) canvas.coords("curve",*path) time.sleep(0.001) parent.after_idle(paint,parent,canvas) root = Tk() root.title('tkline') root.bind('q','exit') canvas = Canvas(root, width=SIZE, height=SIZE, background='white') canvas.pack() canvas.create_line(tag="curve",*zeros(2*NPTS)) root.after(100,paint,root,canvas) root.mainloop()