2016-05-23 6 views
1

tkinterキャンバス内にいくつかのオブジェクトタグがあります。私は、ユーザーがタグ "トークン"でマウスカーソルの下にある現在のオブジェクトを削除できるようにしたいと思います。タグ「トークン」を持つオブジェクトはすべてマウスカーソルの下にあるものだけを削除する必要はありません。私はタグ "トークン"を持つオブジェクトを削除できるようにしたいと思います。 。私はタグ」のラインを持つオブジェクトの削除を禁止したい私が試してみた:。特定のオブジェクトタグを持つすべてのアイテムを削除する機能tkinter

self.canvas.delete("current") 

をしかし、これは私が試したとき、私は(ラインオブジェクトを含む)私のマウスカーソルの下に何も削除することができます

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

私が正しくリコール場合は、すべてのウィジェットは、多分あなたはidで削除することができますIDを持っていますか? – glls

+0

はい、私はこれをself.canvas.find_withtag( "token")またはself.canvas.gettags( "")で試してみました。トークン ")オプションを使用することができますが、私はまだそれらのすべてを同時に、または私のカーソルの下にあるものを削除することができるだけで終わる。私はそれを間違って実装しているが、アプローチを変更する方法がわからないので、うまくいく。 – user1332577

答えて

1

することができますどちらかを取るE長い道のり:

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 
+0

私はそのショートカットを取ったが、他の選択肢があることを知っているのは良いことだ。 – user1332577

関連する問題