【问题标题】:why a .png file suddenly have black background in tkinter?为什么 .png 文件在 tkinter 中突然有黑色背景?
【发布时间】: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 不透明。

标签: python image tkinter png


【解决方案1】:

尝试使用另一种导入方法。

使用照片 = PhotoImage(file="logo.png")

这应该会移除黑色背景。

  • 去掉“while True:”

root.mainloop() 本身就是一个循环

【讨论】:

    最近更新 更多