Как заставить Tkinter поддерживать прозрачность PNG?

Я вставил частично прозрачное изображение PNG в Tkinter, и все, что я получаю, это

alt text

Как сделать темный треangularьник справа прозрачным? (как и должно быть)

Это Python 2.6 на Windows 7, кстати.

Ответы

Ответ 1

Здесь пример (файл 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 Imaging Library):

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

Это должно печатать "RGBA". Если нет, вам нужно убедиться, что альфа-канал сохранен вместе с изображением. Вам нужно будет проконсультироваться с руководством по графической программе, как это сделать.