如何删除Tk窗口中的一组Entry组件并根据Spinbox值重新生成输入框列表
解决方法
你只需要在每次生成新Entry前,先销毁已存储的旧Entry组件,再清空存储列表即可,修改后代码如下:
from tkinter import * # 补充缺失的导包部分 CORRECT_ENTRIES = [] def generate_entries(): # 先删除已有的所有Entry for entry in CORRECT_ENTRIES: entry.destroy() # 清空存储列表 CORRECT_ENTRIES.clear() # 再生成新的Entry列表 n = int(spinbox.get()) for i in range(1, n+1): entry = Entry(width=40) entry.grid(row=3+i, column=0, pady=5, padx=5) CORRECT_ENTRIES.append(entry) window = Tk() # Spinbox spinbox = Spinbox(from_=3, to=15, width=5) spinbox.grid(row=2, column=1) # Button generate_btn = Button(text="Generate Entries", command=generate_entries) generate_btn.grid(row=2, column=3) window.mainloop() # 补充缺失的窗口主循环代码
原理说明
- tkinter组件调用
destroy()方法后,会从窗口中彻底移除该组件,释放相关资源 - 清空全局存储列表
CORRECT_ENTRIES后再添加新生成的Entry,能保证列表里始终只保留当前窗口中存在的输入框实例,方便后续取值使用
内容的提问来源于stack exchange,提问作者J. Ghadani
相关产品推荐
相关产品推荐

