将拖放文件拖放到 Python 脚本上

Posted

技术标签:

【中文标题】将拖放文件拖放到 Python 脚本上【英文标题】:Drag drop file onto Python script 【发布时间】:2011-10-21 14:21:09 【问题描述】:

我正在寻找一种跨平台的方法,通过实现拖放方法使我的 Python 脚本处理文件的路径。目前我手动转到终端并使用sys.argv方法:

python myscript.py /Python/myfile.xls

但是,这是缓慢且“技术性”的。理想情况下,我会采用一种快速且交互式的方式来允许我的 Python 脚本处理文件。我主要需要它来为 Mac 工作,但跨平台会更好。

【问题讨论】:

【参考方案1】:

如果您想使用 Tkinter,请查看此处的 Tkinter DnD 绑定 http://klappnase.bubble.org/TkinterDnD/index.html

运行时,绑定会显示一个带有列表框的示例,允许您将文件拖到其上。

【讨论】:

你有这个绑定吗?它不再可访问。另外,请参阅此问题 ***.com/questions/14267900/… 以获取有关同一问题的新问题。 @mmgp 你可以使用 WayBack 来获取 zip (web.archive.org/web/20120104000747/http://klappnase.bubble.org/…)【参考方案2】:

您想将 myfile.xls 拖放到文件导航器中的 python 脚本上吗?说 Finder 或 Mac 上的任何东西,Win 上的 Explorer,Nautilus 等?在这种情况下,不会有一个简单的跨平台解决方案,因为您必须在不同系统上连接不同的软件。

对于特定于 Mac 的解决方案,请尝试 AppleScript - 这是sample

对于 Pythonic 的东西有 http://appscript.sourceforge.net/ , http://docs.python.org/library/macosa.html

否则解决方案在上面的答案中。使用内置于 Tk、wx 或 QT 中的自定义 GUI。您可以查看他们各自的文档以进行拖放,他们确实有跨平台的方式。

【讨论】:

您真的需要在 2011 年在 Mac 上编写 AppleScript 吗? Windows 安装会自动进行设置 - 删除的文件会发送到 argv【参考方案3】:

使用 Tkinter 或类似的东西编写一个小型 GUI 并让用户从 GUI 中选择一个文件是最简单的。大致如下:

import tkFileDialog
f = tkFileDialog.askopenfilename()
# Go on from there; f is a handle to the file that the user picked

但是,我不知道有任何跨平台方法可以让脚本使用拖放功能。不过,这可能更容易。

【讨论】:

这不是所要求的答案。

以上是关于将拖放文件拖放到 Python 脚本上的主要内容,如果未能解决你的问题,请参考以下文章

将拖放组件添加到 iOS 应用程序

使用 HTML5/jQuery 上传拖放文件

解决 OnDropFiles 可能无响应的问题

Qt:将拖放委托给孩子的最佳方式

使用拖放更改列表项的顺序

在画布上拖放形状