每次调用PhotoImage时是否分配了内存

时间:2018-12-09 10:08:16

标签: python-3.x user-interface tkinter tkinter-canvas

我有一个Tkinter GUI程序,该程序根据用户给出的比例因子显示图像(大约100张图片)。因此,我使用PIL调整图像的大小,将它们一个接一个地存储在数组中,

My_Images = []
for i in range(100)
    img = Image.open("Pic"+ str(i) + ".gif")
    Zimg = img.resize((Z.Width,Z.Height))
    Zimage = ImageTk.PhotoImage(Zimg)
    My_Images.append(Zimage)

Z.Width和Z.Height由一个函数根据用户输入的比例因子来计算。因此,GUI窗口使用的画布被配置为根据用户导航输入一个接一个地显示图片(由数组引用)。

我担心的是,当我在多个基于用户的条目(具有缩放比例)之后打印数组内容时,从而对上述“ for循环”进行了多次迭代,针对数组My_Images的内容的打印命令给出了“ pyimage900”,以及类似的高数字。我想知道这是否对内存分配有负面影响,因为在“ for循环”的第九次迭代之后,“ pyimage1”-“ pyimage800”对我没有用。 尽管每次在启动“ for循环”之前都会清除数组,但条目的“ pyimage”数字后缀仍在不断增加。

未使用的pyimage对象的这种内存分配是否对内存有负面影响?是否可以删除它们,如何?

1 个答案:

答案 0 :(得分:0)

如果要删除像Zimage这样的变量,可以使用以下行:

del Zimage

如果要从My_Images数组中删除元素:

del My_Images[3]