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

如何编写代码将Submit按钮获取的文件路径传递给Filename变量?

解决方法

直接在Submit事件触发时获取用户选择的文件路径,替换硬编码的filename即可。这里把Excel读取逻辑封装成函数,让代码更清晰易维护,完整修改后的代码如下:

import PySimpleGUI as sg
import openpyxl  # 原代码遗漏了这个必要的导入

sg.theme("DarkTeal2")
layout = [
    [sg.T("")],
    [sg.Text("Choose a file: "), sg.Input(), sg.FileBrowse(key="-IN-")],
    [sg.Button("Submit"), sg.Button("Exit")]  # 补充Exit按钮,对应原代码的退出逻辑
]

# 创建窗口
window = sg.Window('My File Browser', layout, size=(600,150))

def parse_excel(file_path):
    # 加载Excel文件
    book = openpyxl.load_workbook(file_path)
    # 获取第一个工作表
    sheet = book.worksheets[0]
    # 读取指定列数据
    data = []
    for row in sheet.rows:
        data.append([
            row[0].value,
            ' ',
            row[3].value,
            row[4].value,
            row[5].value,
            row[6].value, 
            row[7].value,
            row[8].value,
        ])
    # 跳过表头行
    return data[1:]
    
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == "Exit":
        break
    elif event == "Submit":
        # 从GUI获取用户选择的文件路径
        selected_file = values["-IN-"]
        # 检查是否选择了有效文件
        if not selected_file:
            sg.popup("请先选择一个Excel文件!")
            continue
        # 调用解析函数处理文件
        excel_data = parse_excel(selected_file)
        # 这里可以添加数据后续处理逻辑,比如打印、展示等
        print("读取完成,数据示例:", excel_data[:3])

window.close()

核心改动说明:

  • 补充openpyxl导入:原代码使用了该库但未导入,会导致运行报错。
  • 封装Excel读取逻辑:把解析Excel的代码放到parse_excel函数中,参数为文件路径,方便复用。
  • 动态传递路径:在Submit事件中,直接将values["-IN-"](用户选择的文件路径)传入解析函数,替代原来硬编码的filename。
  • 增加合法性检查:避免用户未选择文件就点击Submit导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:55:24