Tkinter는 창(window) 안에 캔버스(canvas)를 추가할 수 있는 기능을 제공합니다. 그런데 캔버스를 생성하면 내부적으로 메모리 저장 공간을 차지하게 됩니다. 즉, Tkinter에서 캔버스를 만들면 상당한 메모리를 소비하기 때문에, 더 이상 필요하지 않은 경우 이를 정리(clear)하거나 삭제(delete)해 주어야 합니다.
delete() 메서드로 캔버스 전체 지우기
캔버스를 지우려면 delete() 메서드를 사용하면 됩니다. 이 메서드에 인자로 "all"을 지정하면, Tkinter 프레임 안에 존재하는 캔버스의 모든 요소를 한 번에 삭제하고 화면을 깨끗이 비울 수 있습니다.
예제 코드
#Import the tkinter library
from tkinter import *
#Create an instance of tkinter frame
win = Tk()
#Set the geometry
win.geometry("650x250")
#Creating a canvas
myCanvas =Canvas(win, bg="white", height=200, width=200)
cordinates= 10, 10, 200, 200
arc = myCanvas.create_arc(cordinates, start=0, extent=320, fill="red")
myCanvas.pack()
#Clearing the canvas
myCanvas.delete('all')
win.mainloop()
위 코드를 실행하면 캔버스가 깨끗하게 지워진 상태로 창이 표시됩니다.
실행 결과 비교
① 캔버스를 지우지 않은 경우: 먼저 아래 코드 줄을 주석 처리한 뒤 프로그램을 실행해 보세요.
myCanvas.delete('all')그러면 빨간색 호(arc)가 그려진 캔버스가 다음과 같이 나타납니다.

② 캔버스를 지운 경우: 이번에는 해당 코드 줄의 주석을 해제하고 다시 실행해 보세요. delete('all') 메서드가 호출되면서 캔버스 위의 모든 그래픽 요소가 제거되어 다음과 같이 빈 캔버스만 남게 됩니다.

정리
Tkinter에서 캔버스의 내용을 지우는 것은 매우 간단합니다. canvas.delete('all') 한 줄이면 캔버스에 그려진 모든 항목(도형, 이미지, 텍스트 등)을 한꺼번에 제거할 수 있습니다. 특정 항목만 삭제하고 싶다면 'all' 대신 해당 아이템의 ID를 인자로 전달하면 되므로, 상황에 맞게 활용하시기 바랍니다.