0

试图在我的 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

4

1 回答 1

1

现在这是一个疯狂的猜测,但我只记得一个类似的问题。我能够以这种方式重现您的“蓝框”,所以这也可能是您的问题。我只是试一试。

我假设 PhotoImage 是在其他一些范围内创建的(可能是一个方法showImage(self, id)或类似的东西),并且没有对它的引用超出此方法的范围。这具有在PhotoImage此方法结束时将被垃圾收集的效果,即使它在标签中使用!

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

于 2013-03-15T14:37:33.157 回答