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

Acr*_*ozo 3 python image tkinter python-imaging-library

所以我有 2 张图像,其中 1 张图像应该是背景,另外 1 张只是角色图像。我可以将一张图像放在另一张图像上,但该图像具有白色边框,即使它是 PNG 文件。

它是这样的: 在此输入图像描述

这就是我想要的样子: 在此输入图像描述

这是两个单独的图像: https://i.stack.imgur.com/DX7N6.jpg 抱歉,我没有直接发布图像,但我不能,因为我没有 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()
Run Code Online (Sandbox Code Playgroud)

col*_*ins 5

您只需要使用canvasTkinter 中的小部件即可。只有画布小部件支持透明度。这与 Tkinter 绘制显示的方式有关。截至目前,您的代码只是叠加两个图像。除非您使用画布小部件,否则 Tkinter 不知道如何以透明度组合它们。

\n\n

请看下面的代码:

\n\n
from tkinter import *\nfrom PIL import Image\n\n\nroot = Tk()\nroot.title("Game")\n\n\nframe = Frame(root)\nframe.pack()\n\n\ncanvas = Canvas(frame, bg="black", width=700, height=400)\ncanvas.pack()\n\n\nbackground = PhotoImage(file="background.png")\ncanvas.create_image(350,200,image=background)\n\ncharacter = PhotoImage(file="hero.png")\ncanvas.create_image(30,30,image=character)\n\nroot.mainloop()\n
Run Code Online (Sandbox Code Playgroud)\n\n

我所做的就是下载您提供的图像。我没有修改图像。因此,底线是您只需要使用画布小部件。

\n\n

在此输入图像描述

\n\n

瞧\xc3\xa0!

\n\n
\n\n

注意:提出的问题与如何使 Tkinter 支持 PNG 透明度?

\n

  • 未使用“from PIL import Image” (2认同)