Seite 1 von 1

Tag-Bezeichner bei Canvas-Objekten

Verfasst: Montag 27. Februar 2006, 20:07
von spooky0815
Hallo,

ich spiele in letzter Zeit etwas mit Tkinter und Canvasobjekten rum. Nun will ich z.B. 10 Objekte erstellen und jedem einen eigenen Tag geben, um sie später schneller wiederzufinden. Also so gehts jedenfalls nicht:

for i in range (0,10):
canvas.create_oval(1,1,2,2,tag=i)

Sicher kommt die frage, warum ich das Objekt nicht mit "find_closest" suche - das ist richtig, aber bei mehr Objekten (>100) überlagern diese sich und der Aufwand für das Finden wird sehr groß.

Ich dachte es gab ne lösung mit der lambda Funktion, aber ich kann mich einfach nicht daran erinnern.

Also vielen Dank für Eure Tipps...

Spooky

Verfasst: Montag 27. Februar 2006, 21:24
von mawe
Hi!
spooky0815 hat geschrieben: Also so gehts jedenfalls nicht:

for i in range (0,10):
canvas.create_oval(1,1,2,2,tag=i)
Was genau geht da nicht? Ich meine, ausser dass alle ovals übereinander liegen, passts eigentlich.

Gruß, mawe

Verfasst: Montag 27. Februar 2006, 22:15
von spooky0815
das "tag=i" geht so nicht...

d.h. nicht jedes Objekt hat , wie eigentlich gewollt, ein eigenes tag (nämlich den jeweiligen i wert).

mache ich dann damit folgendes:

for i in canvas.find_withtag("2"):
canvas.delete(i)

--> nun wird anstatt dann nur das eine Objekt mit dem tag 2 (wie ich es möchte) alle Objekte gelöscht :((

Tipps ?? :)

spooky

Verfasst: Montag 27. Februar 2006, 22:27
von mawe
Ja, verstehe. Tipp? ... Bitte sehr :)

Code: Alles auswählen

from Tkinter import *

root = Tk()
c = Canvas()
c.pack()
for i in range(5,15):
    c.create_oval(10,10+i*10,20,20+i*10,fill="blue",tags="oval%s" % i)
c.itemconfig("oval7", fill="red")
root.mainloop()
Brauchbar?

Verfasst: Montag 27. Februar 2006, 22:40
von spooky0815
perfekt :)

DANKE !!!