tkinter画布上的图像显示不工作

2024-04-25 01:54:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个简单的绘画程序,我有完整的功能保存和绘图功能,虽然在打开按钮的方法,在msg.create_图像函数不显示图像。没有错误,只有GUI和空白的大画布。 这是我用python2.7.5编写的代码,pil1.1.7是在windows7 64位上编写的,在windows和Mac上都能正确地运行osxmountinglion,10.9 PS我很抱歉发现。。。他们可能会因为抄到这篇文章而被解雇。 谢谢


Tags: 方法函数代码图像程序功能绘图画布
2条回答

如果你创造图像tk.PhotoImage在函数中,并将其分配给局部变量,则当您离开该函数时,它将被垃圾回收器销毁。这就是为什么你看不到图像。在

你必须把它赋给全局变量

tk_im = None

def opens():
    global img,msg,idraw

    global tk_im

    filename = askopenfilename()
    im = Image.open(filename)
    tk_im = ImageTk.PhotoImage(im)
    a = msg.create_image(0,0,image=tk_im)
    idraw = ImageDraw.Draw(im)

如果你要添加更多的图像,你必须记住所有的全局列表。在

^{pr2}$

您必须保留对图像tk iu im的引用,因为一旦函数退出,它就会被垃圾回收。一种方法是将其添加到画布实例中。在

 def opens():
    global img,msg,idraw
    filename = askopenfilename()
    im = Image.open(filename)
    msg.tk_im = ImageTk.PhotoImage(im)              ## <      
    a=msg.create_image(0,0,image=msg.tk_im)
    idraw=ImageDraw.Draw(im)

相关问题 更多 >