[Python-de] Löschen von Grafiken im Canvas-Fenster
Gregor Lingl
glingl at aon.at
Sun Nov 17 12:54:57 EST 2002
Kathleen Dennler schrieb:
>hallo, erstmal danke für die Hilfe beim Entrywidget. inzwischen klappt
>alles. :-)
>
>Ich habe das Problem, dass ich ein Canvas-Fenster erzeugt habe und darin
>etwas zeichnen lasse. Nun will ich das Gezeichnete wieder löchen und neue
>Zeichnungen anfertigen. Dazu habe ich Knöpfe, einer malt, der andere soll löschen.
>Aber wie kann ich löschen ohne das Canvas-Fenster zu zerstören?
>
>Gruß
>Kathleen
>
>PS: Ich habe noch keine Ahnung vom objektorientierten Programmieren. Ich
>wäre deswegen dankbar über eine ganz einfache Art der Realisierung.
>
>def zeichnen():
> linie = Canvas.Line(canvas,x,y,x+100,y+100) #x und y werden mit
>entrywidgets eingegeben
>
>def loeschen():
> #abbildungen im canvasfenster loeschen
>
>tk = Tkinter.Tk()
>canvas = Tkinter.Canvas(tk)
>canvas.pack()
>malen = Tkinter.Button(tk,text = 'zeichnen', command = zeichnen)
>malen.pack()
>knopf = Tkinter.Button(tk, text = 'loeschen', command = loeschen)
>knopf.pack()
>Tkinter.mainloop()
>
>
>
Ein Weg ist mit canvas.find_all() und canvas.delete(item), z. B.:
(Interaktive Sitzung in der IDLE:)
>>> from Tkinter import *
>>> root = Tk()
>>> cv = Canvas(root, width = 300, height=300)
>>> cv.pack()
>>> cv.create_rectangle(10,20,30,40)
1
>>> cv.create_rectangle(110,120,130,140)
2
>>> cv.create_rectangle(210,220,230,240, fill=("yellow"))
3
>>> cv.find_all()
(1, 2, 3)
>>> cv.delete(*cv.find_all())
>>> cv.create_rectangle(10,20,30,40)
4
>>> cv.create_rectangle(110,120,130,140)
5
>>> cv.create_rectangle(210,220,230,240, fill=("yellow"))
6
>>> for item in cv.find_all():
cv.delete(item)
>>>
Schoene Grüße, Gregor
More information about the Python-de
mailing list