2016-07-12 5 views
1

私はlabelオブジェクトを持っていて、さまざまなイメージを表示する必要があります。私の研究に基づいて、私のlabelオブジェクトに表示される画像を次のスクリプト(下記)で正常に更新する必要があります。しかし、私がself.ImageViewer.configure(image=self.imgToDisp)と呼ぶと、TypeError(下記参照)が出ます。Tkinter(Python 3.5):ラベルオブジェクトで `.configure`を呼び出すときの型エラー

エラーの意味は完全にはわかりませんが、.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' @DeeWBeeモジュールに属するPILライブラリに依存する必要があります –

関連する問題