如何让Tkinter支持PNG透明度?

16 投票
1 回答
53292 浏览
提问于 2025-04-16 01:26

我在Tkinter里放了一张部分透明的PNG图片,但结果却是这样

alt text

我该怎么才能让右边的黑色三角形变得透明呢?(就像它应该那样)

顺便说一下,这是在Windows 7上用的Python 2.6。

1 个回答

25

这里有一个例子(PNG文件example.png在不同地方有很多透明部分):

from Tkinter import Tk, Frame, Canvas
import ImageTk

t = Tk()
t.title("Transparency")

frame = Frame(t)
frame.pack()

canvas = Canvas(frame, bg="black", width=500, height=500)
canvas.pack()

photoimage = ImageTk.PhotoImage(file="example.png")
canvas.create_image(150, 150, image=photoimage)

t.mainloop()

你需要确保这个图片是以“RGBA”格式保存的,简单来说就是在RGB颜色的基础上加了一个透明度通道。你可以用你喜欢的图形软件来检查这个,或者使用PIL(Python图像库):

import Image
im = Image.open("button.png")
print im.mode

运行后应该会显示“RGBA”。如果没有显示这个,你就需要确保透明度通道和图片一起保存了。具体怎么做,你得查查你用的图形软件的说明书。

撰写回答