我一直在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。
任何输入将不胜感激。
在此先多谢
安德烈
我刚刚了解到,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] 删除。
我来说两句