Re: [問題] Tkinter 的一些問題
程式碼改成這樣就可以執行了
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
04/08 22:35, 1F
→
04/08 22:35, , 2F
04/08 22:35, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):