[python] Tkinter 캔버스 이미지 이동

Tkinter는 Python에서 GUI 프로그래밍을 위한 표준 라이브러리입니다. 이를 사용하여 캔버스 위에 이미지를 표시하고 이동시킬 수 있습니다.

캔버스에 이미지 추가하기

먼저 캔버스 위에 이미지를 추가하는 방법을 알아봅시다.

import tkinter as tk

# Tkinter 윈도우 생성
window = tk.Tk()

# 캔버스 생성
canvas = tk.Canvas(window, width=500, height=500)
canvas.pack()

# 이미지 파일 경로
image_path = "image.png"

# 이미지를 캔버스에 추가
image = tk.PhotoImage(file=image_path)
canvas.create_image(0, 0, image=image, anchor=tk.NW)

# 윈도우 실행
window.mainloop()

위 코드에서는 Tkinter의 CanvasPhotoImage 클래스를 사용하여 캔버스를 생성하고 이미지를 추가했습니다. create_image 메서드를 사용하여 이미지를 캔버스에 표시하고, anchor 매개변수를 설정하여 이미지가 캔버스의 좌측 상단에 맞추도록 했습니다.

이미지 이동하기

이제 이미지를 마우스로 이동시킬 수 있는 기능을 추가해 보겠습니다.

import tkinter as tk

# Tkinter 윈도우 생성
window = tk.Tk()

# 캔버스 생성
canvas = tk.Canvas(window, width=500, height=500)
canvas.pack()

# 이미지 파일 경로
image_path = "image.png"

# 이미지를 캔버스에 추가
image = tk.PhotoImage(file=image_path)
image_item = canvas.create_image(0, 0, image=image, anchor=tk.NW)

# 이미지 이동 함수
def move_image(event):
    x = event.x
    y = event.y
    canvas.coords(image_item, x, y)

# 마우스 이동 이벤트 바인딩
canvas.bind("<B1-Motion>", move_image)

# 윈도우 실행
window.mainloop()

위 코드에서는 이전에 생성한 캔버스와 이미지를 그대로 사용하고, move_image 함수를 추가하여 이미지 이동 동작을 구현했습니다. canvas.coords 메서드를 사용하여 이미지의 좌표를 갱신함으로써 이미지를 이동시킬 수 있습니다. bind 메서드를 사용하여 마우스 이동 이벤트를 move_image 함수와 연결했습니다.

이제 마우스로 이미지를 클릭하고 드래그하면 이미지가 이동하게 됩니다.

결론

이번 포스트에서는 Tkinter를 사용하여 캔버스에 이미지를 추가하고 이동시키는 방법을 알아보았습니다. 캔버스를 이용한 이미지 작업은 Python GUI 프로그래밍에서 자주 사용되는 기능이므로, 여러분의 프로젝트에 유용하게 활용할 수 있을 것입니다.