Tag-Bezeichner bei Canvas-Objekten

Fragen zu Tkinter.
Antworten
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Montag 27. Februar 2006, 20:07

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Montag 27. Februar 2006, 21:24

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
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Montag 27. Februar 2006, 22:15

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Montag 27. Februar 2006, 22:27

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?
spooky0815
User
Beiträge: 23
Registriert: Montag 27. Februar 2006, 19:24

Montag 27. Februar 2006, 22:40

perfekt :)

DANKE !!!
Antworten