Как заставить Tkinter поддерживать прозрачность PNG? - PullRequest
13 голосов
/ 17 июля 2010

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

альтернативный текст http://i26.tinypic.com/aelh82.jpg

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

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

1 Ответ

17 голосов
/ 09 августа 2010

Вот пример (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».Если нет, вам нужно убедиться, что альфа-канал сохранен вместе с изображением.Вам нужно будет обратиться к руководству по вашей графической программе, чтобы узнать, как это сделать.

...