用Python编写的程序可以是AppleScripted吗?

时间:2011-11-26 23:13:00

标签: python xcode applescript

我希望我的Python程序能够像AppleScript一样,就像Objective C程序一样。这可能吗?

(注意,这不是关于从Python程序运行AppleScript,也不是关于通过Unix程序调用从AppleScript调用Python程序。这些都是直截了当的。我需要程序操作的真正AppleScriptability。)

有一些关于如何执行此操作的文档。例如,Python 2.7.2文档描述了MiniAEFrame,但即使对from MiniAEFrame import AEServer, MiniApplication的最小引用也会因ImportError而死,并且抱怨无法找到合适的图像/我的架构(x86)不受支持。车辙!似乎MiniAEFrame可能与早期(“Carbon”)API集有关。换句话说,已经过时了。

有一篇非常好的文章关于“使用PyObjC用Python开发Cocoa应用程序” (http://developer.apple.com/cocoa/pyobjc.html)。除了它是在2005年写的;我最近更新的Xcode(4.1)版本没有它描述的任何选项;它提供的Xcode项目文件在令人印象深刻的构建失败中爆炸;最近的PyObjC更新似乎是在2年前完成的。 Apple似乎已经删除了所有允许您在AppleScript或Python中构建“真实”应用程序的功能,只留下了Objective C.

那么,我的选择是什么?是否仍然可以使用Python构建一个真正的AppleScriptable Mac应用程序?如果是这样,怎么样?

(如果重要的话,我需要AppleScripted是文本插入。我需要Dragon Dicate才能在我的应用程序中添加文本。我目前正在使用Tk作为其UI框架,但很乐意使用本机Cocoa / Xcode API /工具,如果这会有所帮助。)

2 个答案:

答案 0 :(得分:3)

PyobjC仍然支持Lion,它在Xcode 4中不再受支持。尽管PyObjC 2.2自2009年以来尚未正式升级,但它仍在开发中 - Apple与Lion发布了2.3.2a0版本。

$ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import objc
>>> objc.__version__
'2.3.2a0'
>>> 

事实上,这个标签在PyObjC SVN中找不到,所以Apple可能已经分叉了这个项目。

因此,您应该能够构建一个Cocoa应用程序并通过将此示例移植到PyObjC来实现AppleScriptability:

http://developer.apple.com/cocoa/applescriptforapps.html

答案 1 :(得分:0)

您还可以使用py-appscript中的py-aemreceive模块。我用它在我的Tkinter应用程序中实现AppleScript支持。