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

Tkinter에서 도형의 알파(투명도)를 변경하는 방법

Tkinter Canvas 위젯과 알파 속성

캔버스(Canvas) 위젯은 tkinter 라이브러리에서 응용 프로그램에 그래픽 기능을 제공하는 가장 다재다능한 위젯 중 하나입니다. 도형이나 이미지를 그리고, 오브젝트에 애니메이션 효과를 주거나 복잡한 시각 요소를 구현할 때 폭넓게 활용됩니다.

도형의 알파(alpha) 속성은 도형에 알파 값을 지정했을 때 부모 창을 기준으로 일정한 투명도를 갖도록 만드는 속성입니다. 즉, 알파 값이 적용된 도형은 배경이 비치는 반투명 상태로 렌더링됩니다.

알파 속성을 정의하려면 모든 도형이 고유한 색상을 가지고 있다고 가정해야 하며, 도형에 알파 값을 지정하는 순간 해당 도형은 RGBA 형식의 이미지로 변환되어야 합니다. 변환된 이미지는 Canvas 위젯을 통해 화면에 표시되며, 이 과정에서 이미지 처리를 담당하는 Pillow(PIL) 라이브러리가 함께 사용됩니다.

예제 코드

# 필요한 라이브러리를 가져옵니다
from tkinter import *
from PIL import Image, ImageTk

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

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

# 새로 생성된 이미지를 저장
images = []

# 투명한 사각형을 만드는 함수 정의
def create_rectangle(x,y,a,b,**options):
    if 'alpha' in options:
        # RGB 색상별 알파 투명도를 계산합니다
        alpha = int(options.pop('alpha') * 255)
        # fill 변수를 사용해 도형을 투명한 색으로 채웁니다
        fill = options.pop('fill')
        fill = win.winfo_rgb(fill) + (alpha,)
        image = Image.new('RGBA', (a-x, b-y), fill)
        images.append(ImageTk.PhotoImage(image))
        canvas.create_image(x, y, image=images[-1], anchor='nw')
        canvas.create_rectangle(x, y, a, b, **options)

# Canvas 위젯 추가
canvas = Canvas(win)

# 캔버스에 사각형 생성
create_rectangle(50, 110, 300, 280, fill="blue", alpha=.3)
create_rectangle(60, 90, 310, 250, fill="red", alpha=.3)

canvas.pack()

win.mainloop()

코드 설명

  • create_rectangle() 함수는 alpha 옵션이 전달되면 fill 색상에 알파 값을 결합해 반투명 도형을 만듭니다.
  • win.winfo_rgb()는 색상 이름을 RGB 값으로 변환하며, 여기에 알파 값(0~255 범위)을 더해 RGBA 색상 정보를 완성합니다.
  • Pillow의 Image.new() 메서드로 RGBA 이미지를 생성한 뒤 ImageTk.PhotoImage로 변환하여 캔버스에 표시합니다.
  • 전역 리스트 images는 PhotoImage 객체의 참조를 유지해, 파이썬의 가비지 컬렉션으로 인해 이미지가 화면에서 사라지는 문제를 방지합니다.
  • 마지막으로 canvas.create_rectangle()을 호출해 도형의 윤곽선을 덧그려 완성합니다.

실행 결과

위 코드를 실행하면 알파 속성이 도형에 어떻게 적용되는지 확인할 수 있습니다. 알파 값은 0(완전 투명)부터 1(완전 불투명) 사이로 지정할 수 있으며, 예제에서는 두 사각형 모두 0.3을 지정해 각각 30%의 불투명도로 렌더링했습니다. 그 결과 파란색과 빨간색 사각형이 배경이 비치는 반투명 상태로 표시되고, 두 도형이 겹치는 영역에서는 색상이 자연스럽게 섞여 보입니다.

Tkinter에서 도형의 알파(투명도)를 변경하는 방법