You need to enable JavaScript to run this app. Tkinter获取选中文件路径后自动关闭窗口及Excel复制问题
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter获取选中文件路径后自动关闭窗口及Excel复制问题

解决方案

你当前代码无法实现选完文件自动关闭窗口,是两个逻辑错误导致的:

  • window.mainloop() 是tkinter的阻塞事件循环,你将关闭窗口的相关逻辑写在这行代码之后,这些代码只会在窗口被手动关闭后才会运行,永远不可能触发自动关闭
  • 选中文件的回调函数get_file_path()中没有调用窗口销毁方法,选完文件后没有触发关闭的动作
修正后完整代码
from tkinter import *
from tkinter import filedialog
import openpyxl as xl

def get_file_path():
    global file_path
    file_path= filedialog.askopenfilename(title = "Select A File", filetypes = (("xlsx", "*.xlsx"), ("xls", "*.xls"), ("xlsm", "*.xlsm"), ("All Files", "*.*")))
    # 选中文件后直接销毁窗口
    window.destroy()

file_path = ""
window = Tk()
b1 = Button(window, text = "Open File", command = get_file_path).pack()
window.mainloop()

# 可选优化:判断用户是否选中了文件,避免取消选择时报错
if not file_path:
    print("未选择任何文件,程序退出")
    exit()
print(file_path)

path1 = file_path
path2 = r'C:\Users\...\Write_Data.xlsx'
wb1 = xl.load_workbook(filename=path1)
ws1 = wb1["BASEL_LN_CTR"]
wb2 = xl.load_workbook(filename=path2)
ws2 = wb2["Loan Data"]
for row in ws1:
    for cell in row:
        ws2[cell.coordinate].value = cell.value
wb2.save(path2)
核心修改说明
  • 在get_file_path()函数末尾添加window.destroy(),用户选中文件确认后直接触发窗口销毁
  • 删掉了冗余的未生效close_window()函数定义
  • 修正了原代码中错误的path1 = ("r'" and file_path)写法,直接使用file_path变量即可
  • 增加了未选中文件的判断逻辑,避免用户点取消后后续文件操作报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:51:02