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

Tkinter에서 캔버스 항목을 숨기고 표시하는 방법

Tkinter의 Canvas(캔버스) 위젯은 가장 유연하고 다재다능한 위젯 중 하나입니다. 그래픽 디자인, 이미지 추가, 도형 생성 등 다양한 GUI 구성 요소를 만들 때 널리 활용되며, 캔버스 내부에 다른 위젯을 배치할 수도 있습니다. 이렇게 캔버스 안에 들어 있는 요소들을 흔히 "캔버스 항목(Canvas Items)"이라고 부릅니다.

itemconfig() 메서드로 상태 제어하기

버튼 클릭과 같은 이벤트로 캔버스 항목을 표시하거나 숨기고 싶다면 itemconfig(id, state) 메서드의 state 속성을 활용하면 됩니다. 이 메서드는 항목 ID를 기준으로 해당 항목의 속성을 동적으로 변경할 수 있으며, state 값으로는 'normal'(표시)과 'hidden'(숨김)을 사용합니다.

예제 코드

아래 예제에서는 캔버스에 이미지를 추가하고, 버튼을 누를 때마다 해당 이미지를 표시하거나 숨기도록 구현해 보겠습니다.

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

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

# 윈도우 크기 설정
win.geometry("700x350")

# 불리언 값을 전역 변수로 선언
show = True

def on_click():
    global show

    # 이미지가 현재 숨겨져 있는지 확인
    if show:
        canvas.itemconfig(1, state='hidden')
        show = False
    else:
        canvas.itemconfig(1, state='normal')
        show = True

# 캔버스 위젯 추가
canvas = Canvas(win, width=440, height=300)
canvas.pack()

# 캔버스에 이미지 추가
img = ImageTk.PhotoImage(file="bird.jpg")
canvas.create_image(200, 200, image=img, anchor=CENTER)

# 캔버스 항목을 표시/숨기는 버튼 추가
ttk.Button(win, text="Show/Hide", command=on_click).pack()

win.mainloop()

실행 결과

위 코드를 실행하면 캔버스에 이미지가 표시된 윈도우와 함께, 이미지를 숨기거나 다시 보여주는 기능을 실행하는 버튼이 나타납니다.

이제 버튼을 클릭해 보세요. 클릭할 때마다 캔버스의 이미지가 숨겨졌다가 다시 나타나는 것을 확인할 수 있습니다. 이처럼 itemconfig() 메서드를 활용하면 캔버스 항목의 가시성을 간단하게 제어할 수 있습니다.