Python,tkinter:为什么这个jpeg没有显示?

时间:2013-03-15 13:31:26

标签: python tkinter python-imaging-library

尝试在我的GUI窗口上显示来自互联网的图片。

到目前为止,我的代码是:

picURL = "https://graph.facebook.com/" + ID + "/picture"
picBytes= urlopen(picURL).read()
picData = io.BytesIO(picBytes)
picPil = Image.open(picData)
picTk = ImageTk.PhotoImage(picPil)
label = Label(image = picTK, bg = "blue").pack()

我得到的问题是图片应该是一个蓝色的盒子。我该如何解决这个问题?

在Windows上使用python 3.3

1 个答案:

答案 0 :(得分:1)

现在这是一个疯狂的猜测,但我记得similar problem。我能够以这种方式重现你的“蓝盒子”,所以这也可能是你的问题。我试试吧。

我假设PhotoImage是在其他一些范围内创建的(可能是方法showImage(self, id)或类似的东西),并且对它的引用不会超出此方法的范围。这样做会导致PhotoImage在此方法结束时被垃圾收集,即使在Label中使用它也是如此!

尝试创建一个在帧的整个生命周期内存在的变量,并将PhotoImage绑定到该变量(例如,当为GUI使用类时绑定self.images[ID],否则绑定一些全局变量)。如果我是对的,这确实是问题所在,那么这应该会有所帮助。