Tkinter grid布局下如何将选中文件名显示为网格文本标签
Tkinter选文件后更新对应位置标签实现方案
修改核心逻辑:
- 改造原有的
open_file函数,增加入参接收要更新的标签对象、文件标识,选中文件后提取文件名直接更新标签文本,同时存储文件路径供后续上传逻辑使用 - 两个选择文件按钮调用函数时,分别传入自身对应的标签实例,实现点哪个按钮就更新哪个位置标签的效果
- 补全原代码缺失的
uploadFiles函数定义,避免运行报错
修改后可直接运行的完整代码
from tkinter import * from tkinter.ttk import * from tkinter.filedialog import askopenfile import os ws = Tk() ws.title('选择输入文件') ws.geometry('400x300') # 存储两个位置选中的文件路径 selected_files = { "sales": None, "style": None } def open_file(target_label, file_key): file_obj = askopenfile(mode='r', filetypes=[('CSV 文件', '*.csv')]) if file_obj is not None: # 从文件对象中提取纯文件名 file_name = os.path.basename(file_obj.name) # 更新对应位置标签的显示文本 target_label.config(text=file_name) # 保存文件路径供后续上传处理使用 selected_files[file_key] = file_obj.name file_obj.close() def uploadFiles(): # 可在此处补充文件上传、读取处理的实际逻辑 if not all(selected_files.values()): print("请先选择全部需要的文件") return print("销售历史文件路径:", selected_files["sales"]) print("款式分组文件路径:", selected_files["style"]) # 第一行:销售历史文件选择 up1 = Label( ws, text='请选择销售历史文档' ) up1.grid(row=0, column=0, padx=10, pady=10) btn1 = Button( ws, text ='选择文件', command = lambda:open_file(up1, "sales") ) btn1.grid(row=0, column=1, padx=10) # 第二行:款式分组文件选择 up2 = Label( ws, text='请选择款式分组文档' ) up2.grid(row=1, column=0, padx=10, pady=10) btn2 = Button( ws, text ='选择文件', command = lambda:open_file(up2, "style") ) btn2.grid(row=1, column=1, padx=10) # 上传按钮 upld = Button( ws, text='上传文件', command=uploadFiles ) upld.grid(row=7, columnspan=3, pady=20) ws.mainloop()
运行效果说明
点击对应行的「选择文件」按钮选中csv文件后,该行左侧的标签会自动替换显示为选中的文件名,不会影响另一行的内容,完全匹配grid布局下的位置对应要求。
内容的提问来源于stack exchange,提问作者Lhryhor
相关产品推荐
相关产品推荐

