如何让Tkinter支持PNG透明度?
我在Tkinter里放了一张部分透明的PNG图片,但结果却是这样
我该怎么才能让右边的黑色三角形变得透明呢?(就像它应该那样)
顺便说一下,这是在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”。如果没有显示这个,你就需要确保透明度通道和图片一起保存了。具体怎么做,你得查查你用的图形软件的说明书。