Я пишу код, который будет отображать .png в виджете холста всякий раз, когда пользователь выбирает элемент в виджете Treeview. Когда я запускаю свой код, изображение отображается на холсте только тогда, когда в функции selectedItems возникает ошибка. Пока что это может быть любая ошибка, но изображение не будет отображаться, если не возникнет ошибка. Я пытался вставить временную задержку и использовал инструмент отладки, но до сих пор не понимаю, почему это происходит. Если ошибки нет, Treeview по-прежнему создает индекс для выбранного элемента, но холст не обновляется изображением. Может ли кто-нибудь просветить меня?
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. Это сделано намеренно, чтобы изображение отображалось. Я думаю, что проблема в функции tkinter call. Любые идеи?
"hello"
и число 7 - вам нужно преобразовать число в строкуstr(7)
, чтобы объединить оба"hello" + str(7)
- person furas   schedule 27.12.2017tree
, но она никогда не была объявлена, а также вы должны были сохранить ссылкуtkinter.Tk
и добавитьmainloop
. - person Nae   schedule 27.12.2017