能够删除具有特定对象标签tkinter的所有项目

时间:2016-05-23 00:14:30

标签: python tkinter tkinter-canvas

我在tkinter画布中有几个不同的对象标签。我希望用户能够使用标记" token"删除鼠标光标下的当前对象。

我不希望所有对象都带有标记" token"要删除,只有鼠标光标下的一个。我想要任何带有标签的对象"令牌"能够被删除。我想禁止删除带有标签" line的对象。我试过了:

self.canvas.delete("current")

但这允许我删除鼠标光标下的任何内容(包括线对象)。我试过的时候

self.canvas.delete("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")

1 个答案:

答案 0 :(得分:2)

你可以走很长的路:

if 'token' in canvas.gettags(canvas.find_withtag('current')):
    canvas.delete('current')

或使用快捷方式:

canvas.delete('current&&token') #logical operator in tag search expression

# && = AND, || = OR, ! = NOT