Re: [問題] Tkinter 的一些問題

看板Python作者 (殘雲奪月)時間14年前 (2010/04/08 18:53), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
程式碼改成這樣就可以執行了 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)

04/08 22:35, , 1F
大概了解一些原因了!!大感謝! 這 GC 好有效率 o_O
04/08 22:35, 1F

04/08 22:35, , 2F
了解以後更改了一下程式碼目前暫時看起來還 ok !
04/08 22:35, 2F
文章代碼(AID): #1BlRMPxD (Python)
文章代碼(AID): #1BlRMPxD (Python)