这是一个create_text:
self.__canvas.create_text(350, lineVotes, text=str(likesPrinted),
font=("calibri", 30), fill="#66FF99", anchor=E)
我怎么能用按钮删除它?
答案 0 :(得分:7)
一种方法是使用object ID所有Canvas
对象构造函数返回:
id = self.__canvas.create_text(350, lineVotes,
text=str(likesPrinted),
font=("calibri", 30), fill="#66FF99", anchor=E)
然后您可以使用Canvas
对象的delete()
方法列表,如下所示:
self.__canvas.delete(id)
另一种方法是将tag附加到Canvas
对象,并使用它:
self.__canvas.create_text(350, lineVotes,
text=str(likesPrinted),
font=("calibri", 30), fill="#66FF99", anchor=E,
tag="some_tag")
然后将标记传递给delete()
方法而不是对象ID:
self.__canvas.delete("some_tag")
标记的名称可以是任何不包含空格或句点的字符串。
标签更强大,因为您可以将同一个标签提供给多个对象,然后将它们作为一个组进行操作。相反,一个对象可以通过指定它们的元组来附加多个标记:即构造函数调用中的tag=("1234", "@special", "posn:13,42")
。
要在单击Button
时实现此目的,您还需要定义一个函数或方法,以便在调用上述Canvas
方法时调用其中一个方法。然后,在创建按钮小部件时,通过command=
配置选项指定其名称。
例如(在class
定义内):
def create_widgets(self):
self.text_id = self.__canvas.create_text(
350, lineVotes, text=str(likesPrinted),
font=("calibri", 30), fill="#66FF99", anchor=E)
self.delete_btn = Button(root, text="Delete text", command=self.delete_text)
self.delete_btn.pack()
def delete_text(self):
""" Delete the canvas text object. """
if self.text_id:
self.__canvas.delete(self.text_id)
self.text_id = None # To avoid multiple deletions.