如何在Tkinter中在函数外部使用函数内获取的文件名?
解决函数内获取文件路径后外部无法访问的问题
问题原因
你的代码存在两个核心问题:
- 函数内的
file_path = filename是创建了局部变量,并非修改全局的file_path,因为没有声明要使用全局变量。 - 函数缺少
return语句,即便获取到文件名,也无法传递到函数外部。
两种解决方法
方法一:修改全局变量(适配原有结构)
在函数内用global声明要操作的全局变量,这样赋值时才会修改外部的file_path:
file_path = '' def file1(): global file_path # 声明使用全局的file_path变量 filename = filedialog.askopenfilename(initialdir="/", title="Select a File", filetypes=(("Excel Files", "*.xlsx*"), ("Excel", "*.xls*"))) file_path = filename # 调用函数后,外部即可访问file_path file1() # 此处可将file_path传入openpyxl相关函数
方法二:用return返回路径(更规范,推荐)
避免使用全局变量,直接返回选中的文件路径,调用函数时接收返回值:
def file1(): filename = filedialog.askopenfilename(initialdir="/", title="Select a File", filetypes=(("Excel Files", "*.xlsx*"), ("Excel", "*.xls*"))) return filename # 返回获取到的文件路径 # 调用函数并接收返回值 file_path = file1() # 直接将file_path传入openpyxl函数,示例: # from openpyxl import load_workbook # workbook = load_workbook(file_path)
补充说明
你之前尝试return无效,大概率是调用函数时未接收返回值。比如仅执行file1(),而没有写file_path = file1(),自然无法获取到结果。
内容的提问来源于stack exchange,提问作者Mohammed Hassan Naseer
相关产品推荐
相关产品推荐

