尝试在我的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
答案 0 :(得分:1)
现在这是一个疯狂的猜测,但我记得similar problem。我能够以这种方式重现你的“蓝盒子”,所以这也可能是你的问题。我试试吧。
我假设PhotoImage是在其他一些范围内创建的(可能是方法showImage(self, id)
或类似的东西),并且对它的引用不会超出此方法的范围。这样做会导致PhotoImage
在此方法结束时被垃圾收集,即使在Label中使用它也是如此!
尝试创建一个在帧的整个生命周期内存在的变量,并将PhotoImage绑定到该变量(例如,当为GUI使用类时绑定self.images[ID]
,否则绑定一些全局变量)。如果我是对的,这确实是问题所在,那么这应该会有所帮助。