画布上的tkinter图像消失了

时间:2013-06-22 00:04:48

标签: python tkinter

我想在画布上放置“master”图像的副本,我从tk.Listbox中选择了这个名称。完整的程序代码在这里是如此之大,所以我把它的一部分。

from PIL import Image, ImageTk
import Tkinter as tk
import dircache
import copy

def callback(event):
    label.master_image=ImageTk.PhotoImage(Image.open(path))
    label.configure(image=label.master_image)


def apply():
    canvas.copy_image=copy.copy(label.master_image)
    canvas.create_image(10,10,canvas.copy_image)


root=tk.Tk()

frame=tk.Frame(master=root)
canvas=tk.Canvas(master=frame)

listbox=tk.Listbox(master=frame)
listbox.insert(tk.END, *dircache.listdir('./images'))
listbox.bind('<ButtonRelease-1>', callback)

label=tk.Label(master=frame)

button=tk.Button(master=frame, text='Apply', command=apply)

canvas.pack()
frame.pack()
listbox.pack()
label.pack()
button.pack()

root.mainloop()

但是当我点击另一个菜单点(而不是“应用”按钮)时,这意味着label.master_image发生了变化,画布上的图像消失了。

P.S。 label.master_image用于在画布上应用更改之前在标签上进行预览。

1 个答案:

答案 0 :(得分:2)

保持对图像的引用。 <{1}}没有必要。

<强> copy.copy

canvas.copy_image = label.master_image