其他分享
首页 > 其他分享> > 如何删除画布文本对象?

如何删除画布文本对象?

作者:互联网

例如,这是一个create_text:

self.__canvas.create_text(350, lineVotes, text=str(likesPrinted),
                          font=("calibri", 30), fill="#66FF99", anchor=E)

如何用按钮删除它?

解决方法:

一种方法是使用所有Canvas对象构造函数返回的object ID

self.text_id = self.__canvas.create_text(350, lineVotes,
                                         text=str(likesPrinted),
                                         font=("calibri", 30),
                                         fill="#66FF99", anchor=E)

然后,您可以使用Canvas对象的delete()方法列表,如下所示:

self.__canvas.delete(self.text_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”).

为了使单击按钮时发生这种情况,您还需要定义一个函数或方法,该函数或方法在调用时会调用上述Canvas方法之一.然后,在创建按钮窗口小部件时,通过command =配置选项指定其名称.

例如(在类定义中):

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.

标签:python,tkinter,tkinter-canvas
来源: https://codeday.me/bug/20191009/1879858.html