Deleting contents of a Tkinter canvas text item

南笙酒味 提交于 2020-01-06 05:05:27

问题


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.


回答1:


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



回答2:


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

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



回答3:


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


来源:https://stackoverflow.com/questions/47007710/deleting-contents-of-a-tkinter-canvas-text-item

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!