これは、たとえば create_text です。
self.__canvas.create_text(350, lineVotes, text=str(likesPrinted),
font=("calibri", 30), fill="#66FF99", anchor=E)
ボタンでこれを削除するにはどうすればよいですか?
これは、たとえば create_text です。
self.__canvas.create_text(350, lineVotes, text=str(likesPrinted),
font=("calibri", 30), fill="#66FF99", anchor=E)
ボタンでこれを削除するにはどうすればよいですか?
これを行う 1 つの方法は、すべてのオブジェクト コンストラクターが返すオブジェクト IDを使用することです。Canvas
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)
もう 1 つの方法は、オブジェクトにタグを付けて、それを使用することです。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.