Canvas(self.master, bg="white", bd=0, highlightthickness=0, relief=RIDGE)撤销删除图形对象
时间: 2024-05-02 22:17:22 浏览: 69
可以使用`create_`系列方法创建图形对象,然后使用`delete`方法删除。如果需要撤销删除,可以将被删除的图形对象保存在一个列表中,在需要撤销删除时,从列表中取出并重新创建即可。
示例代码:
```python
from tkinter import *
class MyCanvas:
def __init__(self, master):
self.master = master
self.canvas = Canvas(self.master, bg="white", bd=0, highlightthickness=0, relief=RIDGE)
self.canvas.pack(fill=BOTH, expand=YES)
# 创建一个矩形对象
self.rect = self.canvas.create_rectangle(50, 50, 150, 150, fill="blue")
# 创建一个撤销删除按钮
undo_button = Button(self.master, text="撤销删除", command=self.undo_delete)
undo_button.pack()
# 保存被删除的图形对象
self.deleted_objs = []
def delete_obj(self):
# 删除矩形对象
self.canvas.delete(self.rect)
# 将被删除的对象保存到列表中
self.deleted_objs.append(self.rect)
def undo_delete(self):
if self.deleted_objs:
# 从列表中取出被删除的对象
obj = self.deleted_objs.pop()
# 重新创建被删除的对象
if isinstance(obj, int):
# 如果是对象的 ID,需要使用 create 方法重新创建
self.canvas.create(obj)
else:
# 如果是对象本身,直接使用 addtag 方法添加回画布中
self.canvas.addtag_all(obj)
root = Tk()
my_canvas = MyCanvas(root)
# 创建一个删除按钮
delete_button = Button(root, text="删除", command=my_canvas.delete_obj)
delete_button.pack()
root.mainloop()
```
阅读全文