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

Python,tkinter:为什么这个jpeg不显示?,python,tkinter,python-imaging-library,Python,Tkinter,Python Imaging Library,试图在我的GUI窗口上显示来自internet的图片 到目前为止,我的代码是: 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 = pic

试图在我的GUI窗口上显示来自internet的图片

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

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上使用Python3.3现在是一个猜测,但我刚刚想起了一个例子。我可以用这种方式复制你的“蓝盒”,所以这可能也是你的问题。我就试试看

我假设PhotoImage是在其他范围内创建的(可能是一个方法
showImage(self,id)
或类似的方法),对它的引用不会超出此方法的范围。这样做的效果是,在该方法结束时,
PhotoImage
将被垃圾收集,即使它在标签中使用


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

使用存储在磁盘上的映像对我有效。。。您确定
picData
正常吗,即您确实收到了图像?是的,非常确定。为了测试,我使用了
print(picData)
,然后将输出与十六进制编辑器中的图像进行比较,结果匹配。也可以使用来自互联网的随机图片(尽管不是来自facebook)。你能展示代码的其余部分吗?你必须在某个地方创建一个Tk实例等等。。。更新:也测试了一个随机的facebook ID。有效。(不过,在Linux上使用Python 2.7…)你昨天问了完全相同的问题,唯一的变化是你的措辞和
label
label_9
重命名。哦,我得到了我的答案,所以不要担心我不使用类。你还想看什么代码?正如你所说,它可以在2.7版本上运行,我猜问题在于语法从2.7版本更改为3版本。3@user2148781我仍然认为这是由于GC。即使不使用类,也可能会在其他范围内创建
PhotoImage
,并在以后丢弃。如果将
PhotoImage
绑定到全局变量,图像是否仍不显示?如果你把所有的东西都放在顶层,比如你的代码片段,只是增加了导入和Tk初始化,那会怎么样?所以你认为我可能需要把我的picTk图像变成全局的?如果我们去聊天,我会把我所有的代码都贴在一个贴子里,它会起作用。我不知道它是如何/为什么工作的。非常感谢你。现在你知道我怎么把它放大了吗,因为它只是一个缩略的atmYes,这在Python/Tkinter中是一个非常奇怪的行为,当我第一次遇到它时,它也难住了我。我希望标签能建立一些持久的照片参考,所以它能在GC中存活下来,但显然不是这样。很高兴你成功了!