python tkinter for循环使用和图像未加载

时间:2019-02-23 12:29:16

标签: python canvas tkinter

我的图像未加载。我不知道。这是我的代码的一部分。我的图像尺寸在高度和宽度上都较小。出于某种原因,也仅显示最后一张图像:

lenlist1 = len(list1)
""" Displays text and photo """
for i in range(lenlist1):
    name = list1[i]
    Pic = Piclist[i]

    height = i * 400

    canvas.create_text(1,height,text=name,anchor=tkinter.NW)
    pic = tkinter.PhotoImage(file = Pic)
    root.pic = pic

    height2 = (i*400) + 20
    canvas.create_image(1,height2,image=pic, anchor = tkinter.NW)




frame.pack()

1 个答案:

答案 0 :(得分:1)

每次通过该循环,都会为变量$stores = Mage::app()->getStores(); foreach ($stores as $store) { if ($store->getIsActive()) { Mage::log("store ID " . $store->getId() . ": " . $store->getCode(), null, 'myextension.log'); // call update check Mage::log( "before runUpdateCheck()", null, 'myextension.log'); $update_done = Mage::helper('privacypolicy/service')->runUpdateCheck($store); Mage::log( "after runUpdateCheck()", null, 'myextension.log'); if ($update_done AND ! $updated) { $updated = true; } } Mage::log('Cron: Update check finished', null, 'myextension.log'); } 分配一个新的$update_done = Mage::helper('privacypolicy/avalexapiservice')->runUpdateCheck($store);对象。如果附加到该名称的先前对象没有其他引用,则将对其进行垃圾收集。如here所述:

  

您必须在Python程序中保留对图像对象的引用,方法是将其存储在全局变量中,或者将其附加到另一个对象。

     

当PhotoImage对象被Python垃圾收集时(例如,当您从将图片存储在本地变量中的函数返回时),即使Tkinter小部件正在显示该图片,该图片也会被清除。

     

为避免这种情况,程序必须保留对图像对象的额外引用。

例如,您可以将每个pic附加到列表中,以便每个图像始终具有对其的引用。