【问题标题】:Tkinter Background Image not showing upTkinter 背景图像未显示
【发布时间】:2020-08-29 14:07:58
【问题描述】:

我正在尝试在 Tkinter GUI 中创建一个天气应用程序。它工作正常。我想为其添加背景图像,但它不会显示。最初我在没有参考线的情况下做到了,但它没有用。在某些网站上,他们说要保留对图像的引用,但这也不起作用。 此外,我的 Tkinter 窗口大小为 1920x1080,图像尺寸相同,但仍不显示。我试图缩小图像大小而不是窗口,但仍然无法正常工作。接受任何建议。也没有错误。

bg = PhotoImage('clearsky2.jpg')
bgl = Label(gui,image=bg)
bgl.image = bg #given a reference
bgl.place(x=0, y=0, relwidth=1,relheight=1)
bgl.pack()

【问题讨论】:

  • 虽然您创建了一个引用,但您传递的是 bg 而不是它作为标签的图像参数,因此它没有任何效果。在将图像分配给bgl 标签之前,您需要提供参考,然后将此参考而不是bg传递给bgl 标签。
  • 另外,AFAIK tkinter.PhotoImage 不支持 JPEG 图像,尽管 PIL.ImageTk 支持。

标签: python user-interface tkinter background-image photoimage


【解决方案1】:

很遗憾tkinter.PhotoImage 不支持JPEG 文件,但它在较新的版本中支持PNG,并且对GIF 也有适当的支持。要使用JPEG,您需要安装PIL。 在终端说:

pip install Pillow

然后像这样导入它:

from PIL import Image,ImageTk

那么现在,用 PIL 打开图像,说:

img_file = Image.open('clearsky2.jpg')
bg = ImageTk.PhotoImage(img_file)
bgl = Label(gui,image=bg)
bgl.place(x=0, y=0, relwidth=1,relheight=1)

这也适用于 JPEGPNG 文件,请记住,除非您循环图像或在函数内部创建图像,否则您不需要保留引用。

希望它解决了您的问题,如果还有错误,请告诉我

干杯

【讨论】:

  • 嘿,我有错误。我尝试在 anaconda 提示符中安装 PIL,但它说“找不到满足 PIL 要求的版本”。并且已经在 anaconda 中安装了 PIL。我试过你的代码来使用它,但它有另一个错误“模块'PIL.Image'没有属性'Open'”我该怎么办?我也试过这个*.com/questions/10748822/…
  • @Coder123 PIL.Image?尝试从PIL import Image
  • 是的,我从 PIL 导入 Image, ImageTk
  • 是的,我刚刚尝试更改宽度,背景显示在更多区域。我会问新问题。感谢您的帮助!成功了!
  • 是的,它有效......我知道打开的 o 很小我试图编辑你的答案,但他们说至少需要 6 个字符编辑......所以我忽略了它,我从 PIL 导入图像中做了, ImageTk