[Tkinter-discuss] Canvas tag bindings not going away?
Bob Greschke
bob at passcal.nmt.edu
Tue Sep 1 20:07:45 CEST 2009
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
More information about the Tkinter-discuss
mailing list