如何让Tkinter支持PNG透明度?

rec*_*gle 13 python png transparency tkinter

我在Tkinter中放入了一个部分透明的PNG图像,我得到的就是这个

替代文字http://i26.tinypic.com/aelh82.jpg

如何使右侧的黑色三角形清晰?(就像它应该的那样)

这是Windows 7上的python 2.6,顺便说一句.

Fab*_*olm 17

这是一个例子(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()

您需要确保图像已存储为带有Alpha通道的RGBA - RGB.您可以使用您选择的图形程序或使用PIL(Python Imaging Library)检查:

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

这应该打印"RGBA".如果没有,您必须确保Alpha通道与图像一起保存.您必须查阅图形程序手册以了解如何操作.

  • 值得注意的是,`ImageTk`不是Python标准库的一部分,而是Python Imaging Library的必须单独安装的.此外,PIL尚未支持Python 3,因此上述代码仅适用于Python 2.x. (10认同)
  • PIL已被枕头套件分叉,或多或少地被其取代,后者*确实支持3.x。 (2认同)