任何人都可以在这里帮助我。我使用的是python34,下面提到的代码cnippet不会产生任何解释错误。但它在运行时没有显示图片。
import tkinter as tk
from PIL import ImageTk
class MyApp(Frame):
def __init__(self,parent):
Frame.__init__(self,parent)
self.parent=parent
self.createUI()
def createUI(self):
self.grid()
raw_data=Image.open("abc.gif")
image = ImageTk.PhotoImage(raw_data)
label=tk.Label(image = image)
label.grid(column=0,row=0)
root=tk.Tk()
app=MyApp(root)
app.mainloop()
虽然以下代码工作正常。 将tkinter导入为tk 来自PIL导入ImageTk import urllib.request
root = tk.Tk()
raw_data=Image.open("abc.gif")
image = ImageTk.PhotoImage(raw_data)
label = tk.Label(image=image)
label.pack()
tk.mainloop()
认为我缺少或做错了。
答案 0 :(得分:-1)
当你转移到基于类的结构时,你需要保持对图像的引用以防止python垃圾收集它,通常这是通过将它添加到属于该类的列表来完成的:
import tkinter as tk
from PIL import ImageTk
class MyApp(Frame):
def __init__(self,parent):
Frame.__init__(self,parent)
self.parent=parent
self.createUI()
self.images = []
def createUI(self):
self.grid()
raw_data=Image.open("abc.gif")
image = ImageTk.PhotoImage(raw_data)
self.images.append(image)
label=tk.Label(image = image)
label.grid(column=0,row=0)
root=tk.Tk()
app=MyApp(root)
app.mainloop()