# Ported from Brent B. Welch's book Pratical Progamming in Tcl and Tk, 2nd Edition. # Example 31-8 A canvas stroke drawing example. import types, string, pprint, exceptions from Tkinter import * def test(): root = Tk() global canvas canvas = Canvas(root,height=400,width=500) canvas.bind("", StrokeBegin) canvas.bind("", Stroke) canvas.bind("", StrokeEnd) canvas.pack() root.mainloop() # end test() class NotYetImplementedException(exceptions.Exception): pass def StrokeInit(): raise NotYetImplementedException, "StrokeInit" # end StrokeInit() def StrokeBegin(event): global stroke print "clicked at", event.x, event.y del stroke[0:] # blank the list tuple = (event.x, event.y) stroke.append( tuple ) # end StrokeBegin() def Stroke(event): global stroke global canvas tuple = event.x, event.y coords = [] coords.append( stroke[len(stroke)-1] ) coords.append( tuple ) stroke.append( tuple ) stroke.append(tuple) x0=(coords[0])[0] y0=(coords[0])[1] x1=(coords[1])[0] y1=(coords[1])[1] canvas.create_line(x0,y0,x1,y1,tag='segements') # end Stroke() def StrokeEnd(event): global canvas global stroke coords=[] for a_coord in stroke: coords.append(a_coord) canvas.delete('segments') TURN_ON=1 canvas.create_line(coords,tag='line',arrow=LAST,joinstyle=ROUND,smooth=TURN_ON) # end StrokeEnd() if __name__ == '__main__': stroke=[] canvas=None test()