Tkinter 라이브러리에서 Canvas(캔버스) 위젯은 가장 활용도가 높은 위젯 중 하나입니다. 다양한 크기와 형태의 도형을 만들고, 객체에 애니메이션 효과를 주고, 그래픽을 시각화하는 등 폭넓게 사용됩니다.
캔버스에 그려진 특정 항목의 속성을 변경하려면 itemconfig(**options) 메서드를 사용하면 됩니다. 이 메서드는 배경색(fill), 외곽선 색상(outline) 등 캔버스 항목이 가진 다양한 속성을 인자로 받아 손쉽게 수정할 수 있게 해줍니다.
예제 코드
아래 예제에서는 사각형을 하나 만들고, 버튼을 클릭하면 사각형 내부의 색상이 파란색에서 초록색으로 바뀌도록 구현했습니다.
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# Tkinter 프레임 인스턴스 생성
win = Tk()
# 창 크기 설정
win.geometry("700x300")
# 위젯의 상태를 변경하는 함수 정의
def change_color():
canvas.itemconfig(rectangle, fill='green')
# Canvas 위젯 정의
canvas = Canvas(win, width=500, height=240)
canvas.pack()
# 캔버스에 사각형 생성
rectangle = canvas.create_rectangle(100, 100, 400, 400, fill='blue')
# 색상을 변경할 버튼 생성
ttk.Button(win, text="Change Color", command=change_color).pack()
win.mainloop()실행 결과
위 코드를 실행하면 화면 중앙에 파란색 사각형이 있는 창이 나타납니다.

이제 "Change Color" 버튼을 클릭해 보세요. 버튼에 연결된 change_color() 함수가 실행되면서 itemconfig() 메서드가 호출되고, 사각형의 색상이 초록색으로 즉시 변경됩니다.

핵심 포인트
- canvas.create_rectangle(): 캔버스에 사각형을 생성하고 고유 ID를 반환합니다.
- itemconfig(item_id, 옵션): 반환된 ID를 기반으로 해당 항목의 속성(색상, 크기, 외곽선 등)을 동적으로 변경합니다.
- command 매개변수: 버튼 클릭 시 실행할 함수를 연결하여 사용자 상호작용을 처리합니다.
이 방식을 응용하면 마우스 클릭 이벤트(bind())와 결합해 캔버스 항목을 직접 클릭했을 때 색상을 바꾸는 등 더 다양한 인터랙티브 GUI를 만들 수 있습니다.