второе изображение в виде дерева не обновляет tkinter - PullRequest
0 голосов
/ 02 июля 2019

У меня проблема при добавлении одного изображения в древовидную структуру из def

случай один - все в порядке

import tkinter
import PIL.Image, PIL.ImageTk
from tkinter import PhotoImage
from tkinter import ttk    
window = tkinter.Tk()
tree = ttk.Treeview(window)
tree["columns"]="one"
tree.heading("#0",text="Item",anchor=tkinter.W)
tree.heading("one", text="Detections",anchor=tkinter.W)
style = ttk.Style(window)
style.configure('Treeview', rowheight=50)
tree.grid(row=0,column=0,sticky=tkinter.N)
img = PIL.Image.open("1.jpg")
img = img.resize((10, 10))                
img = PIL.ImageTk.PhotoImage(img)
tree.insert('', 'end', text="predict", image=img, value=("title"))

случай два - не работает

window = tkinter.Tk()
tree = ttk.Treeview(window)
tree["columns"]="one"
tree.heading("#0",text="Item",anchor=tkinter.W)
tree.heading("one", text="Detections",anchor=tkinter.W)
style = ttk.Style(window)
style.configure('Treeview', rowheight=50)
tree.grid(row=0,column=0,sticky=tkinter.N)
#img = PIL.Image.open("2.jpg")
#img = img.resize((10, 10))                
#img = PIL.ImageTk.PhotoImage(img)
#tree.insert('', 'end', text="predict", image=img, value=("title"))

def snapshot():
    img = PIL.Image.open("2.jpg")
    img = img.resize((10, 10))
    img = PIL.ImageTk.PhotoImage(img)
    tree.insert('', 'end', text="predict2", image=img, value=("title2"))

btn_snapshot=tkinter.Button(window, text="Snapshot", width=50, command=snapshot)    
btn_snapshot.grid(row=1,column=0)

Тогда проблема в том, что при добавлении изображения из def .... я могу добавить элемент, но изображение не видно

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Спасибо, парень, скопируйте решения для других людей.@ Генри Йик, ты прав, важно сохранить все изображения в списке за пределами функции

list_img = []
def snapshot():
    img = PIL.Image.open("frame-01-07-2019-22-02-38.jpg")
    img = img.resize((10, 10))
    img = PIL.ImageTk.PhotoImage(img)
    list_img.append(img)    
    tree.insert('', 'end', text="predict2", image=list_img[len(list_img)-1], value=("title2"))
0 голосов
/ 02 июля 2019

Очень распространенный вопрос. Вы должны сохранить ссылку на изображение.

def snapshot():
    img = PIL.Image.open("2.jpg")
    img = img.resize((10, 10))
    img = PIL.ImageTk.PhotoImage(img)
    tree.img2dotjpg = img # store the reference
    tree.insert('', 'end', text="predict2", image=img, value=("title2"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...