2013-03-18 1 views
3

나는 Tkinter 위젯에 이미지를 포함 시키려고했지만 아무것도 작동하지 않는 것 같습니다.Python의 Tkinter에서의 이미지와 관련된 문제

from Tkinter import * 
from PIL import Image 

root = Tk() 
image = Image.open('images/myimage.jpg') 
root.image = image 
b = Radiobutton(root, text='Image',image=image,value='I') 
b.pack() 
root.mainloop() 

내가 오류는 다음과 같습니다 : 여기에 내 코드입니다 Trac에

eback (most recent call last): 
    File "C:/Users/.../loadimages.py", line 7, in <module> 
    b = Radiobutton(root, text='Image',image=image,value='I') 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 2714, in __init__ 
    Widget.__init__(self, master, 'radiobutton', cnf, kw) 
    File "C:\Python27\lib\lib-tk\Tkinter.py", line 1974, in __init__ 
    (widgetName, self._w) + extra + self._options(cnf)) 
TclError: image "<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=402x439 at 0x2A6B080>" doesn't exist 

대부분의 인터넷 소스는 가비지 컬렉터을 방지하기 위해 이미지에 대한 참조를 유지하는 것이 좋습니다,하지만 난 볼 수 없습니다 어떻게 내가 여기있는 것보다 더 많이 할 수 있습니다. 여러 개의 Tk 인스턴스를 갖는 것에 관한 제안도 있지만, 나는 하나만 가지고있다.

도움을 주시는 분께 미리 감사드립니다.

답변

6

당신은 PhotoImage에 당신이 PIL을 사용하여 열려있는 이미지를 변환해야합니다 또한

from PIL import Image, ImageTk 

image = Image.open("images/myimage.jpg") 
photoimg = ImageTk.PhotoImage(image) 
b = Radiobutton(root, image=photoimg) 

참조 : 완벽하게 작동

+0

Photoimage API! 감사! –