当应用程序已经在运行时,如何在基于py2app的Python应用程序中接受“打开文档”事件?

安德烈·奥利奇(AndréAulich)

我一直在OS X 10.10上构建64位Python 3.4.2应用程序,我使用py2app 0.9将其捆绑为Mac应用程序。我已经改编了应用程序的Info.plist文件,以便OS X知道我的应用程序可以打开带有特定文件名后缀的文件。

当用户在Finder中双击带有特定文件名后缀的文件时,这将打开应用程序,并将双击文件的名称作为参数发送给该应用程序。

但是,如果该应用程序已经在运行,并且我双击了另一个文件名后缀匹配的文件,则该文件名似乎没有移交给我的应用程序。

这正是我尝试实现的目标:无论我的应用程序是否已在运行,如果我在Finder中双击匹配的文件,都应该在我的应用程序中打开它。

我已经看到py2app创建了Contents / Resources / boot .py文件,该文件似乎捕获了Finder发送的odoc Apple Event,并将其发送到我的Python应用程序。

我在boot .py文件中添加了一些日志记录,并发现当我的py2app捆绑的Python应用程序已经在运行并且我在Finder中双击一个文件时,似乎没有调用boot .py。

任何输入将不胜感激。

在此先多谢

安德烈

安德烈·奥利奇(AndréAulich)

我刚刚了解到,Mac上的Tk可以处理某些AppleEvent,例如打开文档。

code.activestate.com/lists/pythonmac-sig/23079上有一个很好的例子,Mac特定的Tk函数在tcl.tk/man/tcl/TkCmd/tk_mac.htm中列出基本上,您只需添加类似

tk.createcommand("::tk::mac::OpenDocument", doOpenFile)

到您的Tk事件循环,其中doOpenFile需要指向这样的函数:

def doOpenFile(*args):
     for f in args:
         do something

这在Python 2.7和Python 3.4.2(尚未测试其他版本)中很好地工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

py2app 应用程序运行时会报错

当应用程序在后台运行时,从通知中打开片段

如何在运行时在Android应用程序中隐藏(或删除)操作栏

如何在运行时在 webpack 应用程序中要求任意本地脚本?

检查应用程序是否已经在运行

无法获取UIDocumentBrowserController在基于文档的应用程序中打开文档

当应用程序在调试中运行时,如何禁用Firebase崩溃报告?

当应用程序在本机后台运行时如何更新服务中的纬度和经度

当应用程序不在设备上运行时,FCM打开活动和调用片段

如何在运行时检查我的Rails应用程序是否在开发环境或生产环境中运行

如果应用程序已经在运行,如何处理推送通知?

如何在应用程序仍在运行时刷新它(活动)?

如何在运行时获取Java应用程序的真实路径?

如何在运行时更新SpringBoot应用程序的配置而不重载整个ApplicationContext

应用程序如何在运行时解析为共享库的不同版本?

如何在运行时为独立应用程序提供可用的 jar?

如何在运行时设置非托管应用程序的首选CLR(<supportedRuntime>)?

如何在运行时使用应用程序主机和端口

如何在运行时更改应用程序环境?

如何在运行时中检测到应用程序使用了Swift

如何在运行时更改应用程序输出类型

如何在运行时获取Kony应用程序的名称

如何在运行时为 React 应用程序提供安装特定配置?

如何在运行时更改android应用程序的名称和图标?

如何在运行时使用Visual Studio调试Pygame应用程序

如何在运行时更新数据存储在主应用程序类中的变量中的 kivy 标签颜色

如何在 Android 中使用外部应用程序打开文档 pdf/docx

如何在运行时应用程序中使用OpenCV Python在图像上写文本

如何在运行时将图像从Android设备的库映射到Unity应用程序中的Textures?