Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter 캔버스에서 버튼 클릭으로 사각형 색상 변경하기

Tkinter Canvas 위젯이란?

Tkinter의 Canvas(캔버스) 위젯은 도형, 로고, 호(arc), 애니메이션 객체 등 동적인 GUI 인터페이스를 개발할 때 활용되는 가장 유연한 위젯 중 하나입니다. create_rectangle(x1, y1, x2, y2, **options) 생성자를 사용하면 캔버스 위에 원하는 위치와 크기의 사각형을 손쉽게 그릴 수 있습니다.

또한 캔버스에 추가된 모든 항목은 모양, 크기, 색상(fill), 외곽선(outline) 등 다양한 속성을 지원하기 때문에, 실행 중에도 이러한 속성을 자유롭게 제어할 수 있습니다.

버튼 클릭으로 사각형 색상 변경하기

그렇다면 이미 그려진 사각형의 색상을 버튼 클릭 이벤트를 통해 변경하려면 어떻게 해야 할까요? 핵심은 itemconfig() 메서드입니다. 이 메서드는 캔버스 항목의 ID를 받아 해당 항목의 속성을 동적으로 수정해 주며, 여기에 fill='blue'처럼 새로운 색상 값을 지정하는 콜백 함수를 정의하면 사각형의 색상을 간단히 바꿀 수 있습니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *

# Tkinter 프레임 인스턴스 생성
win = Tk()

# 프레임 크기 설정
win.geometry("700x250")

# 사각형의 색상을 변경하는 함수 정의
def change_color(*args):
    canvas.itemconfig(shape, fill='blue')

# 프레임 안에 캔버스 추가
canvas = Canvas(win, width=500, height=250)
canvas.pack()

# 캔버스 위젯 안에 빨간색 사각형 추가
shape = canvas.create_rectangle(500, 100, 50, 50, fill='red')

# 색상을 변경하는 버튼 추가
button = Button(win, text="Change Color", font=('Helvectica 11'),
command = lambda: change_color(canvas))
button.place(relx=.5, rely=.5, anchor=CENTER)
win.mainloop()

실행 결과

위 코드를 실행하면 빨간색 사각형과 "Change Color" 버튼이 배치된 윈도우가 화면에 나타납니다.

Tkinter 캔버스에서 버튼 클릭으로 사각형 색상 변경하기

이 상태에서 "Change Color" 버튼을 클릭하면, change_color() 함수가 호출되면서 사각형의 색상이 즉시 파란색으로 전환됩니다.

Tkinter 캔버스에서 버튼 클릭으로 사각형 색상 변경하기

핵심 포인트 정리

- create_rectangle(): 캔버스에 사각형을 생성하고 고유한 항목 ID를 반환합니다.
- itemconfig(): 반환된 항목 ID를 기반으로 fill, outline 등 속성을 실행 중에 변경합니다.
- lambda 활용: 버튼의 command 옵션에 인자가 있는 함수를 연결할 때 lambda를 사용하면 편리합니다.

이 방식을 응용하면 버튼뿐 아니라 마우스 클릭, 키 입력 등 다양한 이벤트에 따라 캔버스 항목의 색상이나 크기를 자유롭게 제어하는 인터랙티브한 GUI를 만들 수 있습니다.