首页 > 解决方案 > 是否可以创建一个透明的 tk 窗口并在其上创建一个非透明的图片,仅使用 tk 和 PIL

问题描述

是否可以仅使用 tk 和 PIL 创建一个透明的 tk 窗口并在其上创建一个不透明的图像,或者如果我不可能使用哪个库? 图片链接

标签: pythonpython-2.7tkintertk

解决方案


您可以使用wm_attributes('-transparentcolor', '#abcdef')将特定颜色设置为窗口的透明颜色,然后将窗口背景颜色设置为该颜色。

下面是一个示例代码:

from tkinter import *

root = Tk()
root.wm_attributes('-transparentcolor', '#abcdef')
root.config(bg='#abcdef')
root.geometry('400x200')

photo = PhotoImage(file='python.png')
Label(root, image=photo).place(x=50, y=50)

root.mainloop()

以及 Windows 10 中的结果:

在此处输入图像描述

更新:

为了使用透明图像,Canvas.create_image(..)可以使用:

从 tkinter 导入 *

root = Tk()
root.geometry('400x200')

transparent_color = '#abcdef'
root.wm_attributes('-transparentcolor', transparent_color)

canvas = Canvas(root, bg=transparent_color)
canvas.pack(fill=BOTH, expand=1)
photo = PhotoImage(file='python-logo.png')
canvas.create_image(50, 50, image=photo, anchor=N+W)

root.mainloop()

结果:

在此处输入图像描述


推荐阅读