Canvas Object Tags: Help for Rookie

John Smith someone at microsoft.com
Wed Dec 25 21:52:13 EST 2002


Many thanks for the help.  The lines.append(self.canvas.createLine()) is 
just the solution I was looking for.  I also appreciate the book and web 
site references.

John Smith wrote:

> Pythoners:
> 
> I am goofing around with the canvas class and trying to reference line
> objects drawn on a canvas by their tags.  I thought the easiest appraoch
> would be to give each new line an tag set by an integer counter.  A short
> version of my code looks like:
> 
> class myCanvas:
> 
> def __init__(self, root):
> 
>     tagid = 0
> 
>>>>Some code
> 
>     self.btn = Button(self.frame, text='OK')
> 
>     self.btn.pack(side=LEFT)
> 
>     self.btn.bind('<Button-1>', self.lineupdate(tagid))
> 
>>>>Some code
> 
> def lineupdate(self, tag, event=None):
> 
>     coordlist = self.canvas.coords(tag)
> 
>     lastx = coordlist[2]
> 
>     lasty = coordlist[3]
> 
>     tagid = tagid + 1
> 
>     newx = lastx + 50
> 
>     newy = lasty - 50
> 
>     self.canvas.create_line(lastx, lasty, newx, newy, arrow='last',
>     width=2,
> fill='red', tags=self.tagid)
> 
> def firstline(self):
> 
>     self.canvas.create_line(10, 10, 200, 200, arrow='last', width=2,
> fill='red', tags=self.tagid)
> 
> 
> 
> mc = myCanvas(root)
> 
> mc.firstline()
> 
> root.mainloop()
> 
> 
> 
> A get an attribute error in the lineupdate function for the
> self.canvas.coords(tag) function.  My understanding is that the function
> should return the coordinates of the line object.
> 
> 
> 
> Any help?




More information about the Python-list mailing list