【发布时间】:2023-12-01 14:21:01
【问题描述】:
我在学校的电脑上写了这段代码,完全没问题。我在我的个人电脑上写了相同的代码,现在它显示的图片没有透明度(黑色背景)。图片是同一张图片(没有背景的png)
from tkinter import *
from PIL import ImageTk, Image
root = Tk()
root.geometry("1300x731")
root.resizable(width=False, height=False)
photo = Image.open("logo.png")
zoom = 0.5
pixels_x, pixels_y = tuple([int(zoom * x) for x in photo.size])
img = ImageTk.PhotoImage(photo.resize((pixels_x, pixels_y)))
panel = Label(root, image = img).place(relx = 0.5, rely = 0.1, anchor = 'center')
#panel.grid(row=5000, column=3)
#panel.pack(side = "bottom", fill = "both", expand = "yes")
root.config(cursor="@curs.cur")
while True:
root.mainloop()
【问题讨论】:
-
您可以使用生成器表达式来获取元组而不是列表理解,也只有
Canvas支持透明度。导入时也不要使用* -
你为什么把
root.mainloop()放在一个无限的while循环中?顺便说一句,如果 PNG 具有透明度,您应该会看到灰色背景(标签的默认背景颜色)。 -
PNG 文件并不意味着全部具有透明度,它取决于 Alpha 层。也许你的 logo.png 不透明。