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

Tkinter Canvas에서 이미지를 업데이트하는 방법

Python의 PIL 또는 Pillow 패키지는 프로그램 내에서 이미지를 처리할 수 있는 강력한 도구를 제공합니다. 이를 활용하면 이미지를 열고 다양한 방식으로 조작할 수 있으며, 데이터 시각화에도 사용할 수 있습니다. 애플리케이션에서 이미지를 표시하려면 일반적으로 Canvas 위젯을 사용하는데, Canvas 위젯은 이미지와 객체를 추가할 수 있는 다양한 기능을 제공하기 때문입니다.

이미 표시된 이미지를 다른 이미지로 변경하려면 itemconfig() 메서드를 사용하여 캔버스 항목을 재구성하면 됩니다. 이 메서드는 교체할 이미지 객체를 인자로 받아 화면에 즉시 반영해 줍니다.

예제 코드

아래 예제에서는 원하는 이미지 세 개를 준비하여 프로젝트 디렉터리(작업 폴더)에 저장한 뒤 실행하면 됩니다.

# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk

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

# 창 크기 설정
win.geometry("750x400")

# 이미지를 업데이트하는 함수 정의
def update_image():
    canvas.itemconfig(image_container, image=img2)

# 캔버스 생성 후 이미지 추가
canvas = Canvas(win, width=650, height=350)
canvas.pack()

# 캔버스 이미지를 변경하는 버튼 생성
button = ttk.Button(win, text="Update", command=lambda: update_image())
button.pack()

# 이미지를 변수에 불러오기
img1 = PhotoImage(file="logo.png")
img2 = PhotoImage(file="logo2.png")
img3 = PhotoImage(file="logo3.png")

# 캔버스에 이미지 추가
image_container = canvas.create_image(0, 0, anchor="nw", image=img1)

win.mainloop()

실행 결과

위 코드를 실행하면 캔버스와 함께 이미지를 변경할 수 있는 버튼이 포함된 창이 나타납니다.

Tkinter Canvas에서 이미지를 업데이트하는 방법

이제 "Update" 버튼을 클릭하면 itemconfig() 메서드에 의해 캔버스의 이미지가 새로운 이미지로 교체되는 것을 확인할 수 있습니다.

Tkinter Canvas에서 이미지를 업데이트하는 방법

핵심 포인트 정리

- itemconfig(): 캔버스에 이미 생성된 항목의 속성을 동적으로 변경하는 메서드입니다.
- create_image(): 캔버스에 이미지를 배치하고 해당 항목의 ID를 반환하며, 이 ID를 itemconfig()에 전달하여 이미지를 교체합니다.
- anchor="nw": 이미지의 좌측 상단(north-west)을 지정한 좌표(0, 0)에 맞춰 배치합니다.