Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Tkinter 캔버스 직사각형을 투명하게 만드는 방법은 무엇입니까?

<시간/>

캔버스 위젯은 Tkinter 라이브러리에서 가장 다양한 위젯 중 하나입니다. 일반적으로 모든 응용 프로그램에서 모양을 그리고 개체에 애니메이션을 적용하고 복잡한 그래픽을 만드는 데 사용됩니다. Rectangle과 같은 모양을 만들기 위해 create_rectangle(x,y, x+ width, y+ height, **options)을 사용합니다. 방법. 너비, 높이, 채우기 및 bg, 테두리 너비와 같은 속성을 추가하여 캔버스에서 항목을 구성할 수 있습니다. 등

알파 캔버스의 속성은 캔버스 항목의 투명도를 정의합니다. 그러나 이 속성은 Tkinter 라이브러리에서 사용할 수 없습니다. 따라서 모양에 투명도 속성을 제공하는 함수를 정의해야 합니다. 투명도 속성에 대한 함수를 만드는 단계는,

  • 내장 함수 정의 create_rectangle(x,y,a,b, **options) .
  • 알파 계산 도형에 제공해야 하는 각 색상(RGB)에 대해.
  • 사전 정의된 알파 제거 (해당되는 경우) pop()을 사용하여 모양에서 .
  • wininfo_rgb()를 사용하여 영역의 모양 색상 계산 알파 추가 모양으로.
  • 새로 생성된 도형은 색상과 배경이 다르기 때문에 반드시 이미지로 사용해야 합니다.
  • 이미지를 캔버스에 쉽게 표시할 수 있습니다.

예시

# Import the required libraries
from tkinter import *
from PIL import Image, ImageTk

# Create an instance of tkinter frame
win= Tk()

# Set the size of the tkinter window
win.geometry("700x350")

# Store newly created image
images=[]

# Define a function to make the transparent rectangle
def create_rectangle(x,y,a,b,**options):
   if 'alpha' in options:
      # Calculate the alpha transparency for every color(RGB)
      alpha = int(options.pop('alpha') * 255)
      # Use the fill variable to fill the shape with transparent color
      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)
# Add a Canvas widget
canvas= Canvas(win)

# Create a rectangle in canvas
create_rectangle(50, 110,300,280, fill= "blue", alpha=.3)
create_rectangle(40, 90, 420, 250, fill= "red", alpha= .1)
canvas.pack()

win.mainloop()

출력

위의 코드를 실행하면 캔버스에 여러 개의 투명한 사각형이 표시됩니다.

Tkinter 캔버스 직사각형을 투명하게 만드는 방법은 무엇입니까?