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

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

alt text

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

Это - python 2.6 в Windows 7, btw.

13
задан Antti Haapala 9 September 2019 в 09:16
поделиться

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

17
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: