You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter动态生成Entry输入框后删除旧控件且不影响固定控件求助

解决方案

你直接调用根窗口的winfo_children()删除控件会命中所有根窗口下的控件,包括固定的数量输入框、按钮、标签,只需要把动态生成的输入框和固定控件做区分即可,推荐两种实现方式:

方案1:维护列表存储动态控件实例

这种方式后续可以直接通过列表读取所有动态输入框的内容,适合需要对输入框内容做批量处理的场景:

from tkinter import *

root = Tk()
# 存储动态生成的输入框实例
dynamic_entries = []

def boxes():
    # 先销毁所有旧的动态输入框
    for entry in dynamic_entries:
        entry.destroy()
    dynamic_entries.clear()

    amount = int(number_boxes.get())
    for i in range(amount):
        for y in range(4):
            set_boxes = Entry(root, borderwidth=3)
            set_boxes.grid(row=i+4, column=y)
            dynamic_entries.append(set_boxes)

# 固定控件部分
label_number_boxes = Label(root, text='输入要生成的输入框行数')
label_number_boxes.grid(row=0, column=0)

number_boxes = Entry(root, width=20, bg='white', fg='black', borderwidth=3)
number_boxes.grid(row=1, column=0)

button_number_boxes = Button(root, text='确认生成数量', command=boxes)
button_number_boxes.grid(row=2, column=0)

root.mainloop()

方案2:独立容器装载动态控件

把所有动态输入框放在单独的Frame容器中,删除时只需要遍历该容器的子控件即可,不需要额外维护全局列表,代码更简洁:

from tkinter import *

root = Tk()
# 专门装载动态输入框的容器
entry_frame = Frame(root)
entry_frame.grid(row=3, column=0, columnspan=4)

def boxes():
    # 销毁容器内所有旧控件,不会影响外部固定控件
    for widget in entry_frame.winfo_children():
        widget.destroy()

    amount = int(number_boxes.get())
    for i in range(amount):
        for y in range(4):
            # 输入框父控件设置为entry_frame
            set_boxes = Entry(entry_frame, borderwidth=3)
            set_boxes.grid(row=i, column=y)

# 固定控件部分
label_number_boxes = Label(root, text='输入要生成的输入框行数')
label_number_boxes.grid(row=0, column=0)

number_boxes = Entry(root, width=20, bg='white', fg='black', borderwidth=3)
number_boxes.grid(row=1, column=0)

button_number_boxes = Button(root, text='确认生成数量', command=boxes)
button_number_boxes.grid(row=2, column=0)

root.mainloop()

内容的提问来源于stack exchange,提问作者Benny Rodríguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:45:03