首页 > 解决方案 > Python - Tkinter - 在画布中撤消

问题描述

我的代码从二进制文件中读取,将十六进制转换为图像并将它们放置到画布上。

我可以单击画布上的单个图块并正确更改它。但我现在知道我绝对需要一个撤消命令(如 common CRTL+Z)。

所以我创建了一个stack_list=[]. 在我clickA的函数中,即更改所选图块的函数,我插入了以下代码:

stack_list.append(clickA) 

如果我运行,print(stack_list)我会获得[<function clickA at 0x00000226B0CA9CA0>].

然后我写了另一个函数:

def undo(): 
    if not stack_list: 
        return 
    previous = stack_list.pop(-1)       
    print(stack_list)

并将其附加到按钮上。它似乎有效,因为print(stack_list)给了我[]但原始状态没有恢复。

有可能获得原始状态而不必“伪造原始状态”(即通过将原始图像存储到变量中然后将其回调)?

标签: pythontkinterundo

解决方案


推荐阅读