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

如何使用tkinter的Entry控件制作电子表格并获取循环生成的输入框数据

问题根源

你当前的代码在循环中重复将新生成的Entry组件赋值给同一个全局变量eTrial,循环结束后该变量仅保留最后一个输入框的实例引用,因此调用.get()方法只能获取到最后一个输入框的值,之前生成的输入框引用全部被覆盖丢失,才会出现获取数据失效的问题。

直接解决方案

通过列表存储所有生成的Entry实例,后续遍历列表即可获取全部输入框的值:

  1. 循环创建组件前先定义空列表存储实例
# 提前初始化空列表
entry_list = []
o = 0
while o < numberofstudents:
    eTrial = Entry(rootOC,width=3)
    eTrial.place(x=200+y*43, y=50 + 25 * o)
    eTrial.delete(0, "end")
    eTrial.insert(0, "100")
    # 将当前输入框实例存入列表
    entry_list.append(eTrial)
    o += 1
  1. 需要读取数据时遍历列表即可
# 按顺序获取所有输入框的值
all_input_values = [entry.get() for entry in entry_list]

如果需要将输入框和指定标识(比如学生ID)绑定,也可以用字典存储:

entry_dict = {}
o = 0
while o < numberofstudents:
    # 可替换为你的实际业务标识,比如学生ID
    current_stu_id = f"stu_{o}"
    eTrial = Entry(rootOC,width=3)
    eTrial.place(x=200+y*43, y=50 + 25 * o)
    eTrial.delete(0, "end")
    eTrial.insert(0, "100")
    entry_dict[current_stu_id] = eTrial
    o += 1

# 读取指定标识对应的输入框值
target_value = entry_dict["stu_0"].get()
更高效的实现优化建议
  • 布局层面不用手动计算place的坐标,改用grid网格布局,直接用行号、列号对应表格的行列位置,代码可维护性更高。
  • 如果需要更完整的电子表格能力(比如滚动、列排序、批量选中编辑),可以直接使用tktable扩展库,原生支持表格结构,不需要手动循环创建输入框。
  • 写入数据库前建议对输入值做格式校验,避免非法值入库;批量写入时优先使用批量SQL语句,比单条循环写入性能更高。

内容的提问来源于stack exchange,提问作者user16454925

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:15:04