基本的に同様の質問がありますが、適切に回答されているとは思いません。
Tkinter: 破棄または削除できるウィジェットを動的に作成するにはどうすればよいですか?
受け入れられた答えは次のとおりです。
動的に作成されたウィジェットをリストに格納する必要があります。次のようなものがあります
dynamic_buttons = [] def onDoubleClick(event): ... button = Button(...) dynamic_buttons.append(button) button.pack() You can then access the buttons for removal with, say, dynamic_buttons[0].destroy()
彼らが話している参照は変数ではないことがわかります。ここでは数値 0 が使用されています。しかし、ウィジェットを動的に作成する場合、これらの参照をボタンにどのように接続するのでしょうか?
トップレベル ウィジェット (ファイルのコンテンツを表示する) を作成し、ウィジェットを閉じるボタンが必要だとします。動的作成により、複数のファイルを開くことができます。問題は、このリストを使用しても、ハード リファレンスがないため、ボタンがどのウィジェットに属しているかをどのように「認識する」かということです (アイテムのリストがあるのは素晴らしいことですが、トップレベル 5 + ボタン 5 では、それらがどのウィジェットであるかの手がかりがありません)。リストの5番目)。ボタンとトップレベルの「アクティブな」バージョンは常に 1 つだけであり、これは削除できます。
aanstuur_files = []
aanstuur_frames = []
aanstuur_buttons = []
def editAanstuur():
openfiles = filedialog.askopenfilenames()
if not openfiles:
return
for file in openfiles:
newtop = Toplevel(nGui, height=100, width=100)
labelTitle = Label(newtop, text=file).pack()
newButton = Button(newtop, text="save & close", command= ...).pack()
aanstuur_files.append(file)
aanstuur_buttons.append(newButton)
aanstuur_frames.append(newtop)