我一直在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事件,并将其发送到我的Python应用程序 .
我在 boot .py文件中添加了一些日志记录,发现当我的py2app捆绑的Python应用程序已经运行并且双击Finder中的文件时,似乎没有调用 boot .py .
任何输入将不胜感激 .
非常感谢提前,
安德烈
1 回答
我刚刚了解到,Mac上的Tk可以处理一些AppleEvents,例如打开文件 .
在code.activestate.com/lists/pythonmac-sig/23079有一个很好的例子,Mac特定的Tk函数列在tcl.tk/man/tcl/TkCmd/tk_mac.htm . 基本上你只是添加类似的东西
到你的Tk事件循环,其中
doOpenFile
需要指向这样的函数:这适用于Python 2.7和Python 3.4.2(尚未测试其他版本) .