如何编写代码将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
相关产品推荐
相关产品推荐

