Lis的Python返回类型

2024-10-01 11:33:46 发布

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

我正在尝试为我的图像编辑程序实现撤销功能。以下是我代码的一部分:

def displayim(root, panel, img, editmenu):
    global image, L
    L.append(img)
    print(len(L))
    if (len(L) > 1):
        editmenu.entryconfig(0, state=NORMAL)
    else:
        editmenu.entryconfig(0, state=DISABLED)    
    image1 = ImageTk.PhotoImage(img)
    root.geometry("%dx%d+%d+%d" % (img.size[0], img.size[1], 200, 200))
    panel.configure(image = image1)
    panel.pack(side='top', fill='both', expand='yes')
    panel.image = image1
    image = img

def undo(root, panel, editmenu):
    global L
    i = len(L)
    del L[i-1]
    last = L.pop
    displayim(root, panel, last, editmenu)

我的想法是,当调用任何打开图像或向图像添加效果的函数时,它将通过调用displayim来显示结果。参数editmenu确保如果没有要撤消的内容,undo命令将被禁用。变量L是一个列表,用于存储调用每个函数后图像的状态。当undo函数被调用时,它将删除列表中的最后一个项目以及最后一个项目之前的项目(现在变成最后一个项目),并将这个新的最后一个项目传递给displayim,这样程序可以显示图像的前一个状态,并再次将其添加到列表中。在

但是,当我尝试使用undo函数时,我得到了一个错误:

^{pr2}$

我想这个错误意味着我从undo传递给last的变量last不是一个PIL-image对象,所以不能将它添加到PhotoImage。我现在有什么解决办法吗?如果你有什么建议,请告诉我。在


Tags: 项目函数图像image列表imglendef