在线图像未在 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
对象进行垃圾回收。
我正在尝试制作一个在线图像查看器,您可以在其中打开 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
对象进行垃圾回收。