2009-08-06 7 views
3

PIL을 사용하여 이미지를로드하고 Tkinter로 만든 창에 이미지를 표시 할 때 매우 기본적인 단계에서 빠져 있습니다. 내가 할 노력하고있어의 가장 단순한 형태는 다음과 같습니다Tkinter에서 PIL은 어떻게 사용합니까?

import Tkinter as TK 
from PIL import Image, ImageTk 

im = Image.open("C:\\tinycat.jpg") 
tkIm = ImageTk.PhotoImage(im) 
tkIm.pack() 
TK.mainloop() 

나는 위의 코드를 실행하려고하면, 나는 다음과 같은 얻을 :

RuntimeError: Too early to create image 
Exception AttributeError: "PhotoImage instance has no attribute 
'_PhotoImage__photo'" in <bound method PhotoImage.__del__ of 
<PIL.ImageTk.PhotoImage instance at 0x00C00030>> ignored 

제가 확인했습니다 파일이 존재하고 이미지 편집기에서 열 수 있으며 im.show()를 사용하여 표시 할 수도 있습니다. 내가 뭘 놓치고 있니? 당신이 ImageTk.PhotoImage을 (호출하기 전에

+0

[Python Tkinter 오류, "너무 이른 이미지 만들기"] 가능한 복제본 (http://stackoverflow.com/questions/10236857/python-tkinter-error-too-early-to-create-image) –

답변

6

는 Tkinter는) 인스턴스화 할 수 있습니다

TK.Tk() 
-1

그것은 메르 디스는 확실히 그 라인을 추가 할 필요가 말을 매우 사실!

는 나는 당신에게 내 이미지 포맷을 표시하고 당신에게 그것을 비교하고있는 경우가 다르다고보고 싶다

하는 이미지에 대한 내 코드는

master.image = PhotoImage(file="Banditlogo.gif") 
w = Label(master, image=master.image) 
w.photo = master 
w.pack() 

입니다 그리고 당신의 코드는

im = Image.open("C:\\tinycat.jpg") 
tkIm = ImageTk.PhotoImage(im) 
tkIm.pack() 

입니다 우리 둘 다 PhotoImage와 함께 PIL을 사용하고 있습니다 두 가지가 맞는지 궁금합니다. 지금이 시점에서 PIL 질문에 완전히 대답하기에 충분한 지식이 없지만 코드가 서로 다르기 때문에 두 코드를 비교하는 것이 재미 있습니다. 나는 사람들이 나와 공유하는 예제 코드에 관해서 만 할 것을 제안 할 수있다. "내 것이면 작동하지 않고, 예제 코드를 시도하고, 코드가 수정되었는지 확인한다."내가 작동하는 것을 발견했을 때이다. 그것으로.

Tkinter를 더 잘 이해하는 사람은 Tkinter와 함께 PIL을 어떻게 사용합니까?

지식은 힘이므로 공유하십시오.

+0

@ Meredith L.Patters 훌륭한 답변. –

관련 문제