我有一个程序可以同时显示许多tkinter PhotoImages(相关:我没有使用PIL)。它目前有几个屏幕,当游戏到达边缘时,它会加载一个新的tilemap,在清除旧内容后在currentTiles数组中创建更多的photoimages。我很确定在程序的其余部分中没有其他对这些photoimages的引用。
奇怪的是,当我在调用loadLevel函数后打印数组中最后一项的内容时,它会显示诸如“pyimage3761”之类的内容,并且每次加载新屏幕时它都会递增。这是因为tkinter跟踪到目前为止创建了多少,或者是因为旧的瓷砖仍在内存中?我不能为我的生活弄清楚哪里可能有另一个参考,所以我只是想知道在我花费数小时寻找错误之前是否还有其他可能性。
谢谢!
答案 0 :(得分:1)
为每个创建的图像分配一个唯一的名称(除非您在创建时指定图像的名称)。这个唯一的名称是通过使用一个单调增加的计数器生成的。