Deleting contents of a Tkinter canvas text item

2019-08-23 06:01发布

As shown below, Function 1 calls another function (draw_text) so that I can display my output / result to a label within the canvas out my GUI. This all work great (thanks to Stack Overflow!!)

    # 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'))

Now my question:

How do I clear the "contents of the label" that has been created so each time I call Function 1 or 2, the result on the canvas will refresh / update. Currently the text message just overwrites its self.

3条回答
Fickle 薄情
2楼-- · 2019-08-23 06:32

For complete details

from Tkinter import *


a = Tk()

canvas = Canvas(a, width = 500, height = 500)
canvas.pack()

myrect = canvas.create_rectangle(0,0,100,100)
canvas.delete(myrect) #Deletes the rectangle
查看更多
爷的心禁止访问
3楼-- · 2019-08-23 06:48

Clear all items from the canvas to start on a clean slate.

from Tkinter import ALL
...
self.canvas.delete(ALL)
查看更多
干净又极端
4楼-- · 2019-08-23 06:52

Each time you create an object on a canvas, it returns an identifier. You can pass this identifier to the canvas delete method.

label_id = self.canvas.create_text(...)
...
self.canvas.delete(label_id)

You can also supply one or more tags to an item, and use the tag rather than the id:

self.canvas.create_text(..., tags=('label',))
...
self.canvas.delete('label')
查看更多
登录 后发表回答