ユーザーがTreeviewウィジェットでアイテムを選択するたびにキャンバスウィジェットに.pngを表示するコードを作成しています。コードを実行すると、selectedItems関数にエラーがスローされたときにキャンバスにのみ画像が表示されます。これまでのところ、どんなエラーでもかまいませんが、エラーがスローされない限りイメージは表示されません。私は時間の遅れを挿入しようとし、デバッグツールを使用したが、私はまだこれがなぜ起こるのか分からない。エラーがなければ、ツリービューは引き続き選択した項目のインデックスを生成しますが、キャンバスは画像で更新されません。誰かが私を教育することはできますか?tkinter canvasのみがエラーで更新されます
import tkinter as tk
import tkinter.ttk as ttk
from PIL import Image, ImageTk
def selectedItems(event):
item = tree.selection()
item_iid = tree.selection()[0]
parent_iid= tree.parent(item_iid)
directory= r"..."
if tree.item(parent_iid, "text") != "":
imageFile= directory + tree.item(item_iid, "text")
image_o= Image.open(imageFile)
image_o.thumbnail([683, 384], Image.ANTIALIAS)
image1= ImageTk.PhotoImage(image_o)
canvas1.create_image((0, 0), anchor= "nw", image= image1)
a= 'hello' + 7
tree.bind("<<TreeviewSelect>>", selectedItems)
これは私が取得エラーです:
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File ".\front_end_DataManager.py", line 21, in selectedItems
a= 'hello' + 7
TypeError: must be str, not int
私はTypeError例外の1の意識です。イメージを表示させることは意図的です。私は問題がtkinter の機能を呼び出していると思う。何か案は?
ページThe Tkinter PhotoImage Classの終わりに常に入れて完全なエラーメッセージが問題になっている(トレースバック)(テキストとしてではなく、スクリーンショット)。その他の有用な情報があります。 – furas
少なくとも、アップロードされたコードでエラーを再現できる必要があります。最終的には[あなたのイメージへのグローバルリファレンスを使用する必要がある]というところまで行きますが(https://stackoverflow.com/q/3359717/7032856)、私の推測です。 – Nae
質問掲示板のエチケットに関するガイドラインをありがとうございます。私はより簡潔に、エラーメッセージを含めるように私の質問を更新しました。 –