【问题标题】:Python 3 'for loop' tkinter images only 1 appearsPython 3 'for loop' tkinter 图像仅出现 1 个
【发布时间】:2017-05-03 05:17:36
【问题描述】:

我正在尝试遍历图像 url 列表并在 tkinter 中显示这些图像。我的代码是:

root = tk.Tk()

for imgTag in outputS:
    url = imgTag["src"]
    with urllib.request.urlopen(url) as u:
        raw_data = u.read()
    im = Image.open(BytesIO(raw_data))
    image = ImageTk.PhotoImage(im)
    label = tk.Label(image=image)
    label.pack( side = tk.BOTTOM)

root.mainloop()

但是,这仅显示其中一张图像,但似乎也为其他图像留出了足够的空间。我很确定 url 列表是正确的,因为我已将它们输出到终端并看到它们。

【问题讨论】:

  • 在问这个问题之前你有没有做任何研究?这个网站上有几个与循环创建或使用图像相关的问题的答案。

标签: python image loops url tkinter


【解决方案1】:

出现的图像是最后一张吗?是这样,问题是你重新绑定im每个循环,只保留最后一个。所有以前的垃圾收集。见this。解决方案是使用每个 ImageTk 小部件保持对每个 Iamge 的引用。

root = tk.Tk()

for imgTag in outputS:
    url = imgTag["src"]
    with urllib.request.urlopen(url) as u:
        raw_data = u.read()
    im = Image.open(BytesIO(raw_data))
    image = ImageTk.PhotoImage(im)
    image.im = im                  # <<< new line
    label = tk.Label(image=image)
    label.pack( side = tk.BOTTOM)

root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    相关资源
    最近更新 更多