【问题标题】:Drag and drop to open files [closed]拖放以打开文件[关闭]
【发布时间】:2013-10-02 22:48:06
【问题描述】:

我指的是图像编辑器如何在将文件拖放到程序图标上时自动打开该文件。现在,我不是在开发图像编辑器,而是从文件中读取输入。

我该怎么做?

【问题讨论】:

  • 你是指放到Explorer/Finder/Nautilus/etc中的程序图标上吗?或者到任务栏/Dock/whatever上已经运行的程序的图标上?
  • 另外,您是否正在构建 GUI 应用程序?如果是这样,您使用的是哪个 GUI 框架?大多数第三方都有很好的包装器来简化此操作,但 Tkinter 没有。
  • 前者(探险家、鹦鹉螺、发现者)。和不。没有 GUI - 它只需要一个文件并创建一个输出文件。
  • 请问为什么暂停?除了在它被搁置之前我已经接受了一个答案(让它搁置有点荒谬),我可能尝试过什么样的尝试解决方案?我对 Python 的经验很少——直到我发布问题的那天早些时候,我什至从未尝试打开文件。
  • 我可能尝试过什么样的事情?我知道我实际上不知道该怎么做才能完成它,而且我不知道该查看哪个库。

标签: python drag-and-drop


【解决方案1】:

这里有两种不同的意思。


首先,您可以将文件拖到程序的可执行文件上。例如,我在一个窗口中打开我的主目录,在另一个窗口中打开 /usr/local/bin,然后将 spam.txt 从左侧窗口拖放到右侧的 myprogram 中。

理论上,这里发生的事情完全取决于文件管理器。然而,大多数文件管理器——包括 Windows Explorer 和 OS X Finder 以及大多数流行的 linux 发行版附带的默认设置——都会做同样的事情:只需运行程序,就好像你在 shell 中键入了这个:

"/usr/local/bin/myprogram" "/home/kevinmills/spam.txt"

因此,从myprogram 内部,您只需查看sys.argv[1:] 中的文件列表,无论它们是在命令行上还是通过拖放提供的,它都将以相同的方式工作。

如果您将文件拖到符号链接、Windows 快捷方式或 Mac 别名到存储在其他位置(例如桌面上)的程序可执行文件,实际上会发生同样的事情,您不必担心差异。

如果您为 OS X 构建了一个应用程序包,而不仅仅是一个平面脚本,那么事情就会变得更加复杂。然而,所有可以让你在不知道你在做什么的情况下构建这样一个包的更简单的包装器应该自动处理使它看起来与平面脚本相同的魔法,所以你不必担心那个。


或者,您可能会询问是否将文件拖放到停靠栏或任务栏等上已经运行的程序的某种表示上。

那就更复杂了。而且每个平台都不一样。但幸运的是,这不是你正在做的。

【讨论】:

  • 实际上还没有尝试过,但据我所知, sys.argv 似乎正是我所需要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2014-04-12
  • 2023-03-19
  • 2017-05-26
  • 2015-01-11
相关资源
最近更新 更多