2016-07-12 1 views
1

다양한 이미지를 표시해야하는 객체가 label입니다. 내 연구를 바탕으로 다음 스크립트 (아래)가 내 label 개체에 표시된 이미지를 성공적으로 업데이트해야합니다. 그러나 self.ImageViewer.configure(image=self.imgToDisp)을 호출하면 TypeError가 발생합니다 (아래 참조).Tkinter (Python 3.5) : 레이블 객체에서`.configure`를 호출 할 때 TypeError가 발생했습니다.

나는 무엇이 오류의 의미인지 전혀 모르겠다. 그러나 .configure은 문자열을 기대하고있는 것처럼 보입니다. 아무도이 문제에 봉착 한 것처럼 보이지 않으므로 아래 스크립트로 문법적으로 잘못된 것을해야합니다. 모든 입력을 부탁드립니다.

스크립트 :

def getImgs(self): 

    folderPath = filedialog.askdirectory() 

    self.imgArray, self.imagePaths = batchImpt.importAllImgs(folderPath)  

    halThrThsnd.saveAllData(self.imgArray) 

    im = Image.open(self.imagePaths[0]) 
    self.imgToDisp = PhotoImage(im) 
    self.imageViewer.configure(image = self.imgToDisp) 
    self.imageViewer.image = self.imgToDisp 

오류 :

당신은 물론 self.imgToDisp = ImageTk.PhotoImage(im)

self.imgToDisp = PhotoImage(im)을 변경해야

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\tkinter\__init__.py", line 1549, in __call__ 
    return self.func(*args) 
    File "//mspm1bnas50s/home58/biegad1/Python Scripts/GUI_0_1.py", line 40, in getImgs 
    self.imageViewer.configure(image = self.imgToDisp) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\tkinter\__init__.py", line 1330, in configure 
    return self._configure('configure', cnf, kw) 
    File "C:\Users\biegad1\AppData\Local\Continuum\Anaconda3\lib\tkinter\__init__.py", line 1321, in _configure 
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) 
TypeError: __str__ returned non-string (type TiffImageFile) 

답변

2

, 당신이 당신의 import 문에 ImageTk를 추가해야합니다. 내 생각에 너는 이미 그랬다 : from PIL import Image. 그렇다면 수정하십시오 : from PIL import Image, ImageTk.

+0

완전히 작동했습니다. 그렇다면'PhotoImage'와'ImageTk.PhotoImage'의 차이점은 무엇입니까? – DeeWBee

+1

다른 점은 tkinter가 GIF 이미지 만 처리 할 수 ​​있다는 것입니다. 그래서'self.imgToDisp = PhotoImage (im)'를 쓰면 tkinter에게 이미지 처리를 요청하고 있지만, 그렇게 할 수 없다는 것을 의미합니다. 그래서'PhotoImage()'와 같은 이름의 메소드를 가지고 있지만'ImageTk' 모듈에 속한 PIL 라이브러리에 의존해야합니다 @DeeWBee –

관련 문제