Tkinter -- does Canvas.find_closest work?
Russell E. Owen
owen at astroNOJNK.washington.edu.invalid
Fri Apr 21 19:00:28 EDT 2000
I am using Mac Python 1.5.2c1 (current) with Tkinter (based on Tk 8.0).
I have a canvas called "cnv" with the following objects on it:
- 10 stars: tiny filled ovals tagged 'star'
- 9 grid markings: large unfilled ovals that are not tagged at all
I am trying to use the canvas method "find_closest" to find the closest
star, ignoring the grid markings. Supposedly all I have to do is specify
the start keyword with the value of a tag and it will find the closest
object with that tag. Here's a code snippen and some of the output:
----- code snippet -----
nearestStar = self.cnv.find_closest (x=event.x, y=event.y, halo=0,
start='star')
print "found star ", nearestStar[0]
objList = self.cnv.find_withtag('star')
print "star list = ", objList
----- portion of resulting output ------
found star 23
star list = (23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
found star 20
star list = (23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
find_withtag is acting as if I never specified the tag at all. By moving
the mouse pointer around I can get find_withtag to find objects 14 - 32.
23-32 are clearly the stars. 14-22 are presumably the grid circles. The
output above shows it finding one star and one grid circle.
I also tried supplying a numeric values (object IDs) to the "start"
keyword. In this mode find_closest is supposed to find objects with IDs
smaller than the value of "start". However, again it doesn't seem to
have any effect. find_closest still will find any object on the canvas
as I move the mouse pointer around.
Can anybody see an obvious mistake? Has anybody gotten the start keyword
to work in Canvas method "find_closest"?
-- Russell
More information about the Python-list
mailing list