On Thu, Jan 15, 2009 at 12:41 AM, Mr Gerard Kelly <s4027...@student.uq.edu.au> wrote:
> I want to be able to bind these boxes to an event - so that I can either > click on them, or hold the mouse cursor over them, and have them change > color. Here is a version of your program that binds the Enter and Leave events to each box and changes the box color when the mouse is over it: ######################### from Tkinter import * master = Tk() numboxes=6 width=40*(numboxes+2) height=200 w = Canvas(master, width=width, height=height) w.pack() size=width/(numboxes+2) box=[0]*numboxes def enter(e, i): e.widget.itemconfigure(box[i], fill='red') def leave(e, i): e.widget.itemconfigure(box[i], fill='blue') for i in range(numboxes): box[i]=w.create_rectangle((1+i)*40, 40, (2+i)*40, height-40, fill="blue") w.tag_bind(box[i], '<Enter>', lambda e, i=i: enter(e, i)) w.tag_bind(box[i], '<Leave>', lambda e, i=i: leave(e, i)) mainloop() ####################### The 'i=i' in the lambda is needed due to the (surprising) way that variables are bound to closures; without it, every event would be bound to the same value of i. Some explanation here: http://code.activestate.com/recipes/502271/ Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor