如何在按钮中显示图像?

时间:2014-02-09 08:20:45

标签: python python-3.x tkinter python-imaging-library pillow

请帮助修复脚本。

问题是我的脚本由于某种原因显示空白按钮。我需要在每个按钮中都有相应的图像。

from PIL import Image
import glob, os, tkinter

root = tkinter.Tk()

size = 128, 128

for infile in glob.glob("images/*.gif"):
    Im = Image.open(infile)
    pointerIm = Im.thumbnail(size, Image.ANTIALIAS)
    tkinter.Button(root, image=pointerIm).pack()

root.mainloop()

1 个答案:

答案 0 :(得分:1)

  • 您应该通过ImageTk.PhotoImage而不是Image
  • thumbnail方法不返回任何内容;它可以在适当的位置修改图像。
  • 您需要保留对PhotoImage对象的引用。否则将被垃圾收集。
    • 在以下代码中,我将PhotoImage对象附加到images列表以保持参考。

from PIL import Image, ImageTk
import glob, os, tkinter

root = tkinter.Tk()

size = 128, 128

images = []
for infile in glob.glob("images/*.gif"):
    Im = Image.open(infile)
    Im.thumbnail(size, Image.ANTIALIAS)
    photo_image = ImageTk.PhotoImage(Im)
    images.append(photo_image)
    tkinter.Button(root, image=photo_image).pack()

root.mainloop()
相关问题