confused
confused

Reputation: 1323

Create list of tkinter canvas lines/points

Many lines and points possible that I would like to be able to track when I line/point has been moused over. Is there any short codeable way of doing it or do I half to come up with hundreds/thousands of different element names.

I've tried

self.z[0].canvas.create_line()
self.z[1].canvas.create_line()

as well as

self.z(0).canvas.create_line()
self.z(1).canvas.create_line()

to only get back an error saying something like z can't be an integer, aka you can't do that stupid:)

Is there anyway to set up a nice for loop and create the lines/points and then be able to test test them once they are created. I can test the points the way I want to be able to test them but I would just like an easier way of creating the lines/points.

Worst case scenario is there a way of setting up something like

self.z1.canvas
self.z2.canvas
self.z3.canvas

but have 1,2,3 each be able to be increased through a for loop? I'm not sure if I have ever seen something like what I'm suggesting be made mention of or not.

Upvotes: 1

Views: 937

Answers (1)

Bryan Oakley
Bryan Oakley

Reputation: 386010

Every time you create an item on a canvas, it returns a unique id. You can store that id in a list.

self.lines = []
for x in range(1000):
    item = self.canvas.create_line(...)
    self.lines.append(item)

That being said, you don't need to keep any of these in an array to " track when I line/point has been moused over.". You can set up bindings for that.

Upvotes: 2

Related Questions