在线文档教程

MacPython OSA Modules

MacPython OSA模块

本章介绍Python的开放脚本体系结构(OSA,通常也称为AppleScript)的当前实现,允许您从Python程序和相当pythonic接口控制脚本化应用程序。这套模块的开发已经停止。

有关AppleScript和OSA的各种组件的描述,并了解体系结构和术语,请阅读Apple的文档。“Applescript语言指南”解释了概念模型和术语,并记录了标准套件。“Open Scripting Architecture”文档解释了如何从应用程序员的角度使用OSA。在Apple帮助查看器中,这些书籍位于开发者文档核心技术部分。

作为脚本编写应用程序的示例,下面一段AppleScript将获取最前面的Finder窗口的名称并将其打印出来:

tell application "Finder" get name of window 1 end tell

在Python中,下面的代码片段会做同样的事情:

import Finder f = Finder.Finder() print f.get(f.window(1).name)

分布式Python库包括实现标准套件的包,以及与少数常见应用程序接口的包。

要将AppleEvents发送到应用程序,您必须首先创建与应用程序术语接口的Python包(脚本编辑器称为“字典”)。这可以在PythonIDE中完成,也可以通过从命令行运行gensuitemodule.py模块作为独立程序来完成。

生成的输出是一个包含多个模块的包,一个用于程序中使用的每个套件以及一个__init__将所有套件粘合在一起的模块。Python继承图遵循AppleScript继承图,所以如果程序的字典指定它包含对Standard Suite的支持,但用额外参数扩展一个或两个动词,则输出套件将包含一个模块Standard_Suite,该模块导入并重新导出StdSuites.Standard_Suite但是会覆盖具有额外功能的方法。输出gensuitemodule非常易读,并且包含Python文档中原始AppleScript词典中的文档,因此阅读它是文档的一个很好的来源。

输出包实现了一个名称与包含所有AppleScript动词作为方法的包相同的主类,其中直接对象作为第一个参数,所有可选参数作为关键字参数。AppleScript类也以Python类的形式实现,比较和所有其他东西。

实现动词的主要Python类还允许访问在AppleScript类“应用程序”中声明的属性和元素。在目前的版本中,就目标方向而言,因此在上面的示例中,我们需要使用f.get(f.window(1).name)而不是更多的Pythonic f.window(1).name.get()

如果AppleScript标识符不是Python标识符,则会根据少量规则对名称进行修改:

  • 空格替换为下划线

Python也支持在Python中创建脚本化应用程序,但以下模块与MacPython AppleScript支持相关:

  • 38.1。gensuitemodule - 生成OSA存根包

此外,支持模块已为预先生成FinderTerminalExplorerNetscapeCodeWarriorSystemEventsStdSuites