在线图像未在 Tkinter 中显示

Online Image not getting displayed in Tkinter

我正在尝试制作一个在线图像查看器,您可以在其中打开 Tkinter 中的在线图像(来自 link)。这是我的代码:

from tkinter import *
from PIL import ImageTk, Image
import requests
from io import BytesIO

root = Tk()

var = StringVar()
entry = Entry(root, textvariable=var)
entry.pack()


def add_image():
imagelab.config(image=WebImage(entry.get()).get())


Button(root, text='Go! ', command=add_image).pack()


class WebImage:
def __init__(self, url):
u = requests.get(url)
self.image = ImageTk.PhotoImage(Image.open(BytesIO(u.content)))

def get(self):
return self.image


imagelab = Label(root)
imagelab.pack()

root.mainloop()

在此,一切正常,没有错误出现。但是,图像不显示。我认为它已加载,但未显示。

谢谢!

试试这个:

from tkinter import *
from PIL import ImageTk, Image
import requests
from io import BytesIO

root = Tk()

var = StringVar()
entry = Entry(root, textvariable=var)
entry.pack()

webimages_list = []

def add_image():
    image = WebImage(entry.get())
    webimages_list.append(image)
    imagelab.config(image=image.get())


Button(root, text="Go!", command=add_image).pack()


class WebImage:
    def __init__(self, url):
        u = requests.get(url)
        self.image = ImageTk.PhotoImage(Image.open(BytesIO(u.content)))

    def get(self):
        return self.image


imagelab = Label(root)
imagelab.pack()

root.mainloop()

它将所有 WebImage 个对象存储在名为 webimages_list 的列表中。这会阻止 python 对 WebImage 对象进行垃圾回收。