我基本上有一个类似的问题,虽然我觉得它没有得到正确的回答:
接受的答案是:
您需要将动态创建的小部件存储在列表中。有类似的东西
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)。按钮和顶层总是只有一个“活动”版本,并且可以删除这个版本。
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)