Tkinter Canvas项目配置

时间:2013-12-11 09:19:04

标签: tkinter python-3.3

所以我有一张画布上有一张照片。我想点击一个用不同的图片替换图片的按钮。

Canvas代码:

self.__leftImageCanvas = Canvas(self.__frame3,width = 200, height = 150, bg = 'white')
gif1 = PhotoImage(file = 'b.gif')
self.__leftImage = self.__leftImageCanvas.create_image(50, 10, image = gif1, anchor = NW)

在画布上编辑图片的功能:

newgif = PhotoImage(file = '2h.gif')
self.__leftImageCanvas.itemconfigure(self.__leftImage, image = newgif)
self.__leftImageCanvas.image = 'b.gif'

我不明白上面的最后一行代码。这是我根据其他问题/答案设法写的东西。 现在,当我故意在最后一行中出现错误时,如语法错误,画布图片成功更改。但如果代码行没有错误,画布图片不会改变,但会完全消失。

1 个答案:

答案 0 :(得分:0)

PhotoImageGarbage Collector可能存在问题。

但它应该是self.__leftImageCanvas.image = newgif

-

当您离开功能时PhotoImage对象(newgif)被Garbage Collector销毁,因此您在newgif中没有图像而您无法看到它Canvas

解决方案是将PhotoImage对象(newgif)分配给全局变量或现有对象(例如self.__leftImageCanvas.image = newgif

-

在当前代码中,如果您在函数中有错误,则Garbage Collector无法完成其工作,并且图像(newgif)不会被破坏。当代码正确时,Garbage Collector会从内存中删除newgifCanvas没有要显示的图片。