[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