无法在普通图像Python Tkinter上放置透明PNG

时间:2019-06-12 04:29:37

标签: python image tkinter python-imaging-library

所以我有2张图像,应该假设1张图像是背景,另外1张只是角色的图像。 我可以将一个图像放在另一个图像上,但是即使它是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 个答案:

答案 0 :(得分:1)

您只需要在Tkinter中使用canvas小部件即可。仅画布小部件支持透明度。这与Tkinter如何绘制显示有关。截至目前,您的代码仅覆盖了两个图像。除非您使用画布小部件,否则Tkinter不知道如何使它们透明化。

请参见以下代码:

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

Voilà!


注意:询问的问题是How do I make Tkinter support PNG transparency?的重复