看板 Python 關於我們 聯絡資訊
程式碼改成這樣就可以執行了 python 2.6 + pil ------------------------------------------ from Tkinter import * import Image,ImageTk c=None class PopImage(): def __init__(self, root): self.im = Image.open("a.jpg") self.imforTk = ImageTk.PhotoImage(self.im) label = Label(root, image=self.imforTk) label.pack() def showImage(): global root global c c=PopImage(root) root = Tk() b = Button(root, text = 'show', command = showImage) b.pack() root.mainloop() -------------------------------------------- 我自己測試的結果發現你不讓Image.open()函數的物件有個變數參考的話 他會被回收(應該吧)導致圖顯示不出來 當你註解掉 global c ,因為c是區域變數 執行完後就會被回收(不一定立刻) c被回收自然Image.open()出來的物件也會被回收 導致你顯示不出圖 你兩個疑問都是因為上面原因所造成的 至於Image.open()出來的物件程式還會用到 卻被回收的原因我不清楚 可能Tk/Tcl參考到的不算在python裡吧(猜測) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.24.224 ※ 編輯: ya790206 來自: 114.38.24.224 (04/08 18:56) ※ 編輯: ya790206 來自: 114.38.24.224 (04/08 18:57)
nubi:大概了解一些原因了!!大感謝! 這 GC 好有效率 o_O 04/08 22:35
nubi:了解以後更改了一下程式碼目前暫時看起來還 ok ! 04/08 22:35