Python 如何在Tkinter中将目录中的图像显示为标签?

Python 如何在Tkinter中将目录中的图像显示为标签?,python,tkinter,python-imaging-library,tkinter-label,Python,Tkinter,Python Imaging Library,Tkinter Label,我不熟悉使用Tkinter的Python GUI,我一直坚持以下几点: 我试图使用Python的os模块读取特定目录中的一些图像文件,并在单个窗口中将它们显示为Tkinter的标签。图像的平均大小为1990 x 1200。因此,我使用枕头库调整了它们的大小,然后使用for循环将每个图像打包到窗口 但不是显示图像,而是显示一个空白窗口。我编写了以下代码: from PIL import Image, ImageTk import tkinter as tk import os root = tk

我不熟悉使用Tkinter的Python GUI,我一直坚持以下几点:

我试图使用Python的
os
模块读取特定目录中的一些图像文件,并在单个窗口中将它们显示为Tkinter的标签。图像的平均大小为
1990 x 1200
。因此,我使用枕头库调整了它们的大小,然后使用for循环将每个图像打包到窗口

但不是显示图像,而是显示一个空白窗口。我编写了以下代码:

from PIL import Image, ImageTk
import tkinter as tk
import os

root = tk.Tk()
root.title("Photo Gallery")
root.geometry("655x350")

for (root_, dirs, files) in os.walk("Wallpaper"):
    if files:
        for file_ in files:
            path = os.path.join("Wallpaper", file_)
            image_ = Image.open(path)
            n_image = image_.resize((100, 100))
            photo = ImageTk.PhotoImage(n_image)
            img_label = tk.Label(root, image=photo)
            img_label.pack()


root.mainloop()

这是空白窗口的截图:


注意:我使用Python 3.6.3和Pizzle 8.2.0。

编辑:结合acw1668评论中的提示(谢谢!),修复会更加简单:

os.walk(“path/to/your/images”)中(根目录、目录、文件)的

如果文件:
对于文件中的文件:
path=os.path.join(“path/to/your/images”,文件\中)
image=image.open(路径)
n_image=图像大小((100100))
photo=ImageTk.PhotoImage(n_图像)
img_label=tk.label(根,图像=照片)

img_label.photo=photo#你确定这些图片被选中了吗?我想有一篇类似的帖子在回答这个问题时提到了一次性变量之类的东西,但我不知道是否适用于你的情况(我也不记得这篇帖子是如何被称为“在函数PhotoImage中创建图像时不显示”)只需使用标签的一个属性就足够了:
img_label.photo=photo
。那么该列表就没有必要了。@acw1668谢谢您的提示!我将其编辑到了我的答案中。