如何将 tk.grid.entry 数据保存到带有标题的 pandas 数据框

问题描述 投票:0回答:1

此代码成功将 Excel 数据加载到网格条目中,允许用户根据需要进行修改。我现在希望在用户使用 pandas 在 DataFrame 中进行更改后保存所有数据,确保保留列标题。请提供适当的代码以将网格条目数据保存到 DataFrame 中。

import tkinter as tk
import pandas as pd
root = tk.Tk()
df = pd.read_excel('c:/erp/student2.xlsx',header=None)
for i, row in df.iterrows():
    c = 0
    for cell in row:
        if i==0: 
            for k in range(df.shape[1]): tk.Label(root, fg="red", font=("Helvetica", 16)).grid(row=i, column=k)    # run ok fill my df data into lable 
            tk.Label(fg="red", font=("Helvetica", 16),text=cell).grid(row=i, column=c)    # run ok fill my df data into lable 
            
        else:
            b3 =  tk.Entry(root)
            b3.grid(row=i, column=c)        
            if i==3 and c==2: b3.config(bg="green")
            b3.insert(0,cell)
        c += 1
root.mainloop()
python
1个回答
0
投票
  • 创建一个列表来存储 Entry 小部件。
  • 数据修改后,从 Entry 小部件中检索数据。
  • 使用新值更新数据框。
  • 通过保留列标题将数据框保存到 Excel。
  • 详细代码如下:
import tkinter as tk
import pandas as pd

df = pd.read_excel('c:/erp/student2.xlsx', header=None)

root = tk.Tk()
entry_widgets = []

for i, row in df.iterrows():
    row_entries = []
    for c, cell in enumerate(row):
        if i == 0:
            tk.Label(root, fg="red", font=("Helvetica", 16), text=cell).grid(row=i, column=c)
        else:
            entry = tk.Entry(root)
            entry.grid(row=i, column=c)
            entry.insert(0, cell)
            row_entries.append(entry)
    if row_entries:
        entry_widgets.append(row_entries)

def save_data():
    for i, row_entries in enumerate(entry_widgets):
        for c, entry in enumerate(row_entries):
            df.iloc[i + 1, c] = entry.get()

    df.to_excel('c:/erp/student2_modified.xlsx', index=False, header=False)
    print("Data saved successfully!")

save_button = tk.Button(root, text="Save Data", command=save_data)
save_button.grid(row=len(df), column=0, columnspan=df.shape[1])

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.