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存根包
此外,支持模块已为预先生成Finder
,Terminal
,Explorer
,Netscape
,CodeWarrior
,SystemEvents
和StdSuites
。