【问题标题】:How do you delete a Canvas text object?如何删除 Canvas 文本对象?
【发布时间】:2015-05-04 15:21:46
【问题描述】:

这例如是一个 create_text:

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

我怎样才能用一个按钮删除它?

【问题讨论】:

    标签: python tkinter tkinter-canvas


    【解决方案1】:

    一种方法是使用所有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")

    要在单击Button 时实现这一点,您还需要定义一个函数或方法,以便在调用上述Canvas 方法之一时调用它。然后,在创建按钮小部件时,通过command= 配置选项指定其名称。

    例如(在class 定义中):

    class 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.
    

    【讨论】:

      猜你喜欢
      • 2019-11-04
      • 2018-09-21
      • 2012-02-27
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 2019-11-25
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多