Python中如何从Tkinter GUI读取更新后的Pandas DataFrame
实现方案
你当前使用的是pandastable库提供的Table组件实现DataFrame的可视化,要读取界面修改后的最新DataFrame,只需保留Table实例的可访问引用,调用内置属性即可,具体步骤如下:
步骤1:修改原有代码,保留Table实例引用
原有代码中PandasTable是函数内部的局部变量,函数执行完成后无法被外部访问,因此无法拿到更新后的数据,我们将其改为全局变量即可:
import tkinter from tkinter import * import pandas as pd from pandastable import Table # 全局变量声明 PARAMETERS = [] # 此处替换为你自己的参数字典列表 GUITopFrame = Tk() # 替换为你自己的顶层窗口实例 labelframe2 = None df = None PandasTable = None # 新增全局Table实例变量 def UpdateVisualTable(): global labelframe2, df, PandasTable labelframe2 = LabelFrame(GUITopFrame, text="数据库", bg="white", fg="black") labelframe2.pack(fill=BOTH, expand=1) frame = tkinter.Frame(labelframe2) frame.pack(fill=BOTH, expand=1) df = pd.DataFrame(PARAMETERS) PandasTable = Table(frame, dataframe=df, showtoolbar=True, showstatusbar=True) PandasTable.show()
步骤2:读取更新后的DataFrame
需要获取最新数据时,直接访问PandasTable.model.df即可拿到修改后的DataFrame对象,示例读取函数如下:
def get_updated_df(): global PandasTable # 读取界面修改后的最新DataFrame updated_df = PandasTable.model.df # 此处可添加你自己的业务逻辑,比如保存到文件、数据校验等 print(updated_df) return updated_df
如果需要实现每次修改表格后自动获取最新数据,可以绑定表格更新事件:
# 这段代码放在UpdateVisualTable函数的PandasTable.show()之后即可 def on_table_update(event): updated_df = PandasTable.model.df print("表格数据已更新,最新内容:\n", updated_df) PandasTable.bind('<TableUpdated>', on_table_update)
界面示例

内容的提问来源于stack exchange,提问作者Arun Kumar
相关产品推荐
相关产品推荐

