如何从Tkinter Grid获取数据并保存为Pandas DataFrame导出至Excel
Tkinter输入界面数据转Pandas DataFrame并导出Excel解决方案
你用Tkinter的Grid布局创建输入界面,想要把用户输入内容存入Pandas DataFrame并导出到Excel,但当前代码获取到的是Entry对象而非实际输入值,以下是修正后的完整代码:
import pandas as pd from tkinter import * from tkinter import messagebox root = Tk() entries = [] # 创建5列10行的输入框(匹配需求,修正原代码仅2列的问题) for row in range(10): row_entries = [] for col in range(5): en = Entry(root) en.grid(row=row+1, column=col, padx=5, pady=5) row_entries.append(en) entries.append(row_entries) # 收集所有输入框的值到data列表 def collect_data(): global data data = [] for row_entries in entries: row_data = [entry.get().strip() for entry in row_entries] data.append(row_data) messagebox.showinfo("提示", "数据收集完成") # 打印并预览DataFrame内容 def show_dataframe(): if not data: messagebox.showwarning("警告", "请先收集数据") return df = pd.DataFrame(data, columns=[f"列{i+1}" for i in range(5)]) print(df) messagebox.showinfo("DataFrame预览", str(df)) # 导出DataFrame到Excel文件 def export_to_excel(): if not data: messagebox.showwarning("警告", "请先收集数据") return df = pd.DataFrame(data, columns=[f"列{i+1}" for i in range(5)]) try: df.to_excel("输入数据.xlsx", index=False) messagebox.showinfo("成功", "数据已导出到输入数据.xlsx") except Exception as e: messagebox.showerror("错误", f"导出失败:{str(e)}") # 创建功能按钮并布局 Button(root, text="收集数据", command=collect_data).grid(row=12, column=0, padx=5, pady=10) Button(root, text="查看DataFrame", command=show_dataframe).grid(row=12, column=1, padx=5, pady=10) Button(root, text="导出到Excel", command=export_to_excel).grid(row=12, column=2, padx=5, pady=10) data = [] root.mainloop()
关键修改说明
- 获取实际输入值:通过Entry控件的
get()方法提取用户输入的文本,原代码直接打印Entry对象,所以输出的是控件标识(如.!entry) - 匹配需求布局:修正原代码仅创建2列输入框的问题,循环生成5列10行的输入区域
- 数据收集逻辑:遍历每行输入框,将单行输入值整理为列表,最终组成二维列表作为DataFrame的数据源
- Excel导出功能:使用Pandas的
to_excel()方法完成导出,添加异常处理避免导出失败时程序崩溃 - 交互提示:通过messagebox反馈操作状态,提升使用体验
内容的提问来源于stack exchange,提问作者Muhammad Fahim Aamir
相关产品推荐
相关产品推荐

