Python3.6+Windows10环境下,Tkinter能否实现拖拽文件获取路径?
用Tkinter实现文件拖拽获取路径(Python 3.6 + Windows 10)
当然可以做到!Tkinter作为Python的标准GUI库,在你的环境下完全支持文件拖拽功能,而且不需要安装任何额外依赖——它是默认随Python安装的。
下面是一个完整的可运行示例代码,实现拖拽文件到窗口后自动获取并显示文件路径:
import tkinter as tk from tkinter import messagebox def on_drop(event): # Windows下拖拽的文件路径会被大括号包裹,需要处理一下 file_path = event.data.strip('{}') # 检查是否是有效路径(也可以扩展判断目录,根据需求调整) if file_path: messagebox.showinfo("文件路径", f"你拖拽的文件路径是:\n{file_path}") # 这里可以添加后续逻辑,比如保存路径、处理文件等 print("获取到的文件路径:", file_path) root = tk.Tk() root.title("拖拽文件测试") root.geometry("400x300") # 允许窗口接受文件类型的拖拽事件 root.drop_target_register(tk.DND_FILES) root.dnd_bind('<<Drop>>', on_drop) # 添加提示文本 label = tk.Label(root, text="请将文件拖拽到这个窗口中", font=("Arial", 12)) label.pack(expand=True) root.mainloop()
代码关键点说明:
drop_target_register(tk.DND_FILES):告诉窗口可以接收文件类的拖拽请求dnd_bind('<<Drop>>', on_drop):绑定拖拽完成后的处理函数,当文件被拖入窗口时自动触发- 处理
event.data:Windows系统中,拖拽返回的路径会被{}包裹,用strip('{}')就能得到真实的文件路径
有没有替代方案?
如果出于特殊原因不想用Tkinter(其实完全没必要,这个方案已经足够简单),在Windows下还可以通过ctypes调用系统API实现,但这种方式代码复杂度高很多,不过同样不需要额外安装库(ctypes是Python标准库的一部分)。还是更推荐上面的Tkinter方案,直观易维护。
内容的提问来源于stack exchange,提问作者Luca




