2017-10-30 5 views
0

以下に示すように、関数1は別の関数(draw_text)を呼び出し、出力/結果をキャンバス内のラベルに表示することができます。このすべてが素晴らしい(スタックオーバーフロー感謝を!!)仕事Tkinterキャンバスのテキスト項目の内容を削除する

# Function 1 

    def Relay_1(): 
     arduinoData.write(b'1') 
     draw_text(self,'This is a Test') 

    # Function 2 

    def Relay_(): 
     arduinoData.write(b'1') 
     draw_text(self,'This is another test number 2') 

    #Function 3 

    def draw_text(self, text): 
     self.canvas.create_text(340,330,anchor = 'center',text = text, font 
     = ('Arial', '10','bold')) 

今、私の質問:

どのように私は私が機能1を呼び出すようにするたびに作成された「ラベルの内容を」クリア行いますか2、キャンバスの結果は更新/更新されます。現在のところ、テキストメッセージはその自己を上書きします。

答えて

0

キャンバスからすべてのアイテムをクリアして清潔なスレートから始めます。

from Tkinter import ALL 
... 
self.canvas.delete(ALL) 
1

オブジェクトをキャンバスに作成するたびに、識別子を返します。この識別子をキャンバスdeleteメソッドに渡すことができます。

label_id = self.canvas.create_text(...) 
... 
self.canvas.delete(label_id) 
ます。また、項目に1つまたは複数のタグを供給し、IDではなく、タグを使用することができます

self.canvas.create_text(..., tags=('label',)) 
... 
self.canvas.delete('label') 
関連する問題