如何在Python中读取Tkinter GUI表格内用户输入的数据?
Tkinter二维Entry表格获取用户输入实现方案
你目前的代码核心问题是创建Entry组件时没有将组件实例或对应的绑定变量做持久化存储,循环结束后无法定位到对应的输入框,自然无法读取输入内容。你可以参考以下两种方案实现:
方案1:存储Entry组件实例直接取值
这种方式不需要额外绑定变量,直接通过Entry组件自带的get()方法读取内容,实现逻辑最简单:
修改后的表格创建代码
from tkinter import * window = Tk() height = 5 width = 2 # 定义二维列表存储所有Entry组件 entry_table = [] for i in range(height): # 每一行先新增空列表 row_entries = [] for j in range(width): # 修复原代码缺失的括号问题 b = Entry(window) b.grid(row=i+1, column=j) row_entries.append(b) entry_table.append(row_entries)
获取表格所有数据的示例代码
你可以在需要触发取值的逻辑(比如按钮点击回调函数)中加入以下代码:
def get_table_data(): # 存储最终的二维数据 table_data = [] for row in entry_table: row_data = [] for entry in row: # 获取输入内容转为int,空输入默认赋值为0,可根据需求调整 try: input_val = int(entry.get()) if entry.get().strip() else 0 except ValueError: # 处理非数字输入的异常场景 input_val = 0 row_data.append(input_val) table_data.append(row_data) # 此处可对获取到的table_data做后续处理 print(table_data) return table_data # 可添加测试按钮触发取值逻辑 Button(window, text="获取表格数据", command=get_table_data).grid(row=height+1, column=0, columnspan=2) window.mainloop()
方案2:通过绑定的IntVar变量取值
如果你确实需要用textvariable做双向绑定,可以存储所有绑定的IntVar实例,后续直接调用get()取值:
表格创建代码
from tkinter import * window = Tk() height = 5 width = 2 # 存储所有绑定的IntVar变量 var_table = [] for i in range(height): row_vars = [] for j in range(width): int_var = IntVar() b = Entry(window, textvariable=int_var) b.grid(row=i+1, column=j) row_vars.append(int_var) var_table.append(row_vars)
取值代码
def get_table_data(): table_data = [] for row in var_table: row_data = [var.get() for var in row] table_data.append(row_data) print(table_data) return table_data Button(window, text="获取表格数据", command=get_table_data).grid(row=height+1, column=0, columnspan=2) window.mainloop()
你提到的表格效果图如下:
内容的提问来源于stack exchange,提问作者Pikachu
相关产品推荐
相关产品推荐

