Tkinter Ekranı Temizleme

Merhaba,
Bir algoritma mı tkinter ile görselleştirme yapıyorum fakat şöyle bir sorun yaşıyorum. Tek bir canvas değişkeni üzerinden x adet farklı konumlarda sayısını bilmediğim kadar canvas oluşturuyorum. Bunların hepsini tek bir değişkenden tahminimce ekrandan kaldırmak mümkün değildir. Varsa yazmanızı rica ediyorum. Eğer yoksa da şunu yapmak istiyorum ekranda ne var ne yok tüm widgetları her şeyi silmesini istiyorum. Bunu yapabilir miyim?

Merhaba, hoş geldiniz.

Bir canvas üzerinde birden fazla canvas mı oluşturuyorsunuz yoksa create_arc, create_bitmap, create_image, create_line, create_oval, create_polygon, create_rectangle, create_text ve create_window fonksiyonlarından birini veya bir kaçını kullanarak nesneler mi oluşturuyorsunuz?

Eğer canvas üzerinde başka canvaslar oluşturuyorsanız, aşağıdaki kod ile child widgetleri yok edebilirsiniz.

for i in canvas.winfo_children():
    i.destroy()

veya sadece canvas.destroy() yazarak da hem canvas’ı hem de ebeveyni olduğu diğer widgetleri yok edebilirsiniz.

Ama eğer yukarıda belirttiğim fonksiyonları kullanarak nesneler oluşturuyorsanız ve bu nesneleri silmek istiyorsanız, aşağıdaki örnekte gösterildiği gibi yapabilirsiniz:

import tkinter as tk

root = tk.Tk()

canvas = tk.Canvas(master=root)
canvas.pack()
canvas.create_oval(0, 0, 50, 50, fill="red")
canvas.create_oval(100, 100, 150, 150, fill="blue")


def hepsini_sil():
    for i in canvas.find_all():
        canvas.delete(i)


button = tk.Button(
    master=root, 
    text="Hepsini Sil", 
    command=hepsini_sil
)
button.pack()

root.mainloop()

Silinecek nesneleri, nesnelerin tag özelliğine veya nesnelerin tipine göre de belirleyebilirsiniz.

1 Beğeni