Doesn't ACanvas.delete(ALL) get rid of bindings too? I'm drawing regular map dots (create_oval) on a Canvas "map" and each one gets a Tag, like "P1", "P2", etc. I do a tag_bind to <Button-3> to get a popup menu item for each dot. Everything works fine.

I then have two radiobuttons, one for a regular map (described above), and one for drawing the dots a different color depending on elevation. When the Redraw button is hit with the elevation map mode selected the canvas gets cleared, the background color gets changed, a .delete(ALL) is done (and a .find_all() returns ()), I redraw the create_oval()s with the same kind of Tags ("P1", "P2", etc.), but without doing a tag_bind to <Button-3> (same bunch of code, just with an if-statement to control which kind of dot gets drawn). The new dots still react to a <Button-3> event like as if the TAG is still bound to the <Button-3> event. If I start all over, but draw the elevation map first then the dots don't do the popup menu. If I then redraw with the normal map option the popup menu bind gets bound to the dots from that point on.

Do I have to loop through all of the items and delete the tags before doing the .delete(ALL) or something? This could be major. I use a lot of Tags and binds on a lot of Canvases, but I've never noticed this before. It's doing this on several OSs and versions of everything, so it must be me.

Thanks!

Bob

_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to