2013-04-11 31 views
1

我想顯示在我的文本控件的兩個圖像對象。最初,這兩個對象都顯示爲空圖像。經過一番研究,我瞭解到我需要保持對圖像的參考。我在代碼中添加了一行。我現在看到第二張圖像正確顯示,但第一張圖像仍然是空白的。如何保持光象多次引用的對象

我懷疑我的「參考」正被用於循環中過寫入。是這樣嗎?如果是的話,我將如何維護多個引用,如果我需要顯示一個文本小部件內的多個圖像對象?

這是到目前爲止我的代碼:

from Tkinter import * 
from PIL import Image, ImageTk 
import os 

class TestApp: 
    def __init__(self, parent): 
     self.myParent = parent 
     self.main_container = Frame(parent) 
     self.main_container.pack() 

     self.text_box = Text(self.main_container, height=50, width=80) 
     self.text_box.pack() 

     image_names = ['img1.jpg', 'img2.jpg'] 

     for name in image_names: 
      img = Image.open(os.getcwd() + '\\' + name) 
      img_obj = ImageTk.PhotoImage(img) 
      self.text_box.image_create(INSERT, image=img_obj) 
      self.text_box.insert(END, "\n") 
      # Added this extra reference 
      self.text_box.image = img_obj 

root = Tk() 
root.title("This is a test app") 
mainapp = TestApp(root) 
root.mainloop() 

回答

1

是的,你的參考被覆蓋。

最簡單的可能是隻引用添加到列表中。例如:

class TestApp: 
    def __init__(...): 
     ... 
     self.images = [] 
     ... 
     for name in image_names: 
      ... 
      img_obj = ImageTk.PhotoImage(img) 
      self.images.append(img_obj) 
+0

這是有道理的。謝謝 :) – 2013-04-11 18:19:21

相關問題