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

PySimpleGUI表单数据写入Excel表格功能实现求助

问题修复方案

核心问题与修正点:

  • 缺失控件Key:前两个下拉框(月份、工作)未设置key参数,导致提交时无法获取这两项输入值,Excel写入时会缺失对应列数据。
  • 过时API使用:df.append()已被Pandas弃用,改用pd.concat()实现行添加更稳定。
  • 清空函数错误:原clear_input()写法有误,需用window[key].update('')重置控件内容,同时避免空值循环报错。
  • 窗口提前关闭:提交后直接关闭窗口,无法持续录入数据,需移除window.close()。
  • 文件不存在处理:首次运行若Excel文件未创建,需初始化对应列名的空DataFrame,避免读取报错。

修正后的完整代码:

import PySimpleGUI as sg
import pandas as pd

sg.theme('Darkpurple')

EXCEL_FILE = 'Childsupport.xlsx'

# 处理文件不存在的情况,初始化空DataFrame
try:
    df = pd.read_excel(EXCEL_FILE)
except FileNotFoundError:
    # 按表格列名初始化空DataFrame
    df = pd.DataFrame(columns=['Month', 'Job', 'Amount'])

layout = [
    [sg.Text('请填写以下字段:')],
    [sg.Text('选择月份:'), sg.Combo(
        ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
        size=(15,1), key='Month'
    )],
    [sg.Text('选择工作:')],
    [sg.Combo(['Job 1', 'Job 2'], size=(10,1), key='Job')],
    [sg.Text('存入金额:')],
    [sg.Text('金额 $', size=(8,1)), sg.InputText(key='Amount', size=(8,1))],
    [sg.Submit(), sg.Button('清空'), sg.Exit()]
]

window = sg.Window('抚养费录入表单', layout)

def clear_input():
    # 遍历所有带key的控件进行清空
    for key in ['Month', 'Job', 'Amount']:
        window[key].update('')

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    if event == '清空':
        clear_input()
    if event == 'Submit':
        # 用pd.concat替代append,添加新行
        new_row = pd.DataFrame([values])
        df = pd.concat([df, new_row], ignore_index=True)
        df.to_excel(EXCEL_FILE, index=False)
        sg.popup('数据已保存!')
        clear_input()

window.close()

额外说明:

  • 确保Excel表格的列名与代码中columns的['Month', 'Job', 'Amount']完全一致,否则会出现列不匹配问题。
  • 若需要中文月份,可直接修改Combo中的选项文本,不影响数据写入逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:25:16