【发布时间】:2016-09-19 17:48:19
【问题描述】:
我在 tkinter 画布中有几个不同的对象标签。我希望用户能够使用标签"token"删除鼠标光标下的当前对象。
我不希望删除带有标签"token" 的所有对象,只删除鼠标光标下的对象。我希望能够删除带有标签"token" 的任何对象。我想禁止删除带有标签"line" 的对象。我试过了:
self.canvas.delete("current")
但这允许我删除鼠标光标下的任何内容(包括线条对象)。当我尝试时
self.canvas.delete("token")
这使我可以一次删除所有带有标签"token" 的项目。以下是我的线对象、"token" 对象和删除函数的定义摘录:
# create static line
self.canvas.create_line(50,250,200,250, width=7, fill="grey", tags="line")
#Create oval
myoval = self.canvas.create_oval(x0,y0,x1,y1, width=10, outline="black", fill="black",
tags="token")
def on_button_press_deleteoval(self,event):
'''Delete oval with double button 1 click.'''
self.canvas.delete("current")
【问题讨论】:
-
如果我没记错的话,所有的小部件都有 id,也许你可以按 id 删除?我认为您必须使用相应标签捕获所有小部件的 id 才能删除它们
-
是的,我已经尝试使用 self.canvas.find_withtag("token") 或 self.canvas.gettags("token") 选项,但我仍然只能删除所有他们同时或我光标下的任何东西。我显然实施错了,但不知道如何改变方法,所以它会起作用。
标签: python tkinter tkinter-canvas