Tkinter - 使用for循环展示多张图片

4

我正在尝试在窗口中显示多张图像(作为标签),但只有最后一张图像被显示。

from tkinter import *
from PIL import ImageTk, Image

root = Tk()

f = open("data/itemIDsList.txt")
ids = []
for line in f:
    line = line.rstrip("\n")
    ids.append(line)
f.close()

for i in range(10):
    img = ImageTk.PhotoImage(Image.open(f"website/images/{ids[i]}.png"))
    Label(root, image=img, width=60, height=80).grid()

root.mainloop()
1个回答

5
每次在循环中重新分配img时,上一个图像的数据会被销毁,因此无法再显示。为了解决这个问题,将图像添加到列表中以永久存储它们:
from tkinter import *
from PIL import ImageTk, Image

root = Tk()

f = open("data/itemIDsList.txt")
ids = []
for line in f:
    line = line.rstrip("\n")
    ids.append(line)
f.close()

imgs = []
for i in range(10):
    imgs.append(ImageTk.PhotoImage(Image.open(f"website/images/{ids[i]}.png")))
    Label(root, image=imgs[-1], width=60, height=80).grid()

root.mainloop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接