如何使Tkinter画布矩形透明?

如何使Tkinter画布矩形透明?

canvas 小部件是Tkinter库中最为多才多艺的小部件之一。通常,它用于在任何应用程序中绘制形状、动画对象和创建复杂图形。要创建矩形等形状,我们使用 create_rectangle(x,y,x + width,y + height,options)** 方法。我们可以通过添加属性,例如 width、height、fill and bg、border width 等,来配置画布上的图形。

alpha 属性可以定义画布项的透明度。但是,该属性在Tkinter库中不可用;因此,我们必须定义一个函数来为形状提供透明属性。创建透明属性函数的步骤如下:

  • 定义内置函数 create_rectangle(x,y,a,b, **options)
  • 为每个颜色(RGB)计算 alpha
  • 使用 pop() 从形状中删除预定义的 alpha (如果适用)。
  • 使用 winfo_rgb() 计算区域内的形状颜色,并将 alpha 添加到形状中。
  • 由于新创建的形状颜色和背景不同,因此需要将其作为图像使用。
  • 图像可以轻松地在画布上显示。

例子

#导入所需库
from tkinter import *
from PIL import Image,ImageTk

#创建tkinter frame实例
win= Tk()

#设置tkinter窗口的大小
win.geometry("700x350")

#存储新创建的图像
images=[]

#定义一个函数来制作透明矩形
def create_rectangle(x,y,a,b,**options):
if 'alpha' in options:
# 计算每种颜色(RGB)的alpha透明度
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(win)

#在画布中创建一个矩形
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画布矩形透明?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程