Невозможно поставить прозрачный PNG поверх обычного изображения Python Tkinter - PullRequest
0 голосов
/ 12 июня 2019

Итак, у меня есть 2 изображения, одно изображение должно быть фоном, а другое - просто изображение персонажа.Я могу поместить одно изображение поверх другого, но оно имеет белые рамки, даже если это файл PNG.

Вот как это выглядит: enter image description here

Вот как я хочу, чтобы это выглядело так: enter image description here

Вот два отдельных изображения: https://imgur.com/a/SmE5lgC Извините, что я не опубликовал изображения напрямую, но не могу, поскольку у меня нет 10 очков репутации.

Я пытался преобразовать его в RGBA, но произошло то же самое.

from tkinter import *
from PIL import Image


root = Tk()
root.title("Game")

background = PhotoImage(file="back.png")
backgroundlabel = Label(root, image=background)
backgroundlabel.pack()

character = PhotoImage(file="hero.png")
characterlabel = Label(root, image=character)
characterlabel.place(x=0,y=0)


root.mainloop()

1 Ответ

1 голос
/ 12 июня 2019

Вам просто нужно использовать виджет canvas в Tkinter. Только виджет холста поддерживает прозрачность. Это связано с тем, как Tkinter рисует дисплей. На данный момент ваш код просто накладывается на два изображения. Tkinter не знает, как создавать их с прозрачностью, если вы не используете виджет canvas.

См. Следующий код:

from tkinter import *
from PIL import Image


root = Tk()
root.title("Game")


frame = Frame(root)
frame.pack()


canvas = Canvas(frame, bg="black", width=700, height=400)
canvas.pack()


background = PhotoImage(file="background.png")
canvas.create_image(350,200,image=background)

character = PhotoImage(file="hero.png")
canvas.create_image(30,30,image=character)

root.mainloop()

Все, что я сделал, это загрузил предоставленные вами изображения. Я не модифицировал изображения. Итак, суть в том, что вам просто нужно использовать виджет canvas.

enter image description here

Вуаля!


Примечание. Заданный вопрос является дубликатом Как заставить Tkinter поддерживать прозрачность PNG?

...