“不允许用户交互”在python中运行AppleScript时

时间:2012-11-21 00:23:27

标签: python applescript

我有applecript,它会显示菜单列表并允许用户选择菜单项等。 它本身运行良好。现在我尝试在python中运行它。我得到了允许的无用户交互。 (-1713)错误。

我在网上看了一下。我尝试了以下方法:

  1. 在同一个AppleScript中添加运行功能,所以我所做的只是将主要内容添加到运行中

    跑步  告诉应用程序“AppleScript Runner”   主要()  结束告诉 结束

  2. 我试图在python中运行上面的内容 进口口 def main():   os.system('osascript -e“告诉应用程序”ApplesScript Runner“做脚本/Users/eee/applescript/iTune.scpt告诉”')

    如果名称 =='主要':    主要() 两种方式都不奏效。谁能告诉我如何正确地做到这一点?

2 个答案:

答案 0 :(得分:10)

这是一个常见的错误。当您使用OSAScript从shell运行脚本时,您必须告诉应用程序显示任何“显示对话框”或“选择列表对话框”或任何需要用户交互的内容。 OSAScript无法显示它们,所以告诉像Finder这样的应用程序来显示它们。使用这样的代码......

tell application "Finder"
    activate
    display dialog "Now it works!"
end tell

或者从命令行通知这不起作用......

osascript -e 'display dialog "Now it will not work."'

但是这会有效,因为我们告诉Finder这样做......

osascript -e 'tell application "Finder"' -e 'activate' -e 'display dialog "Now it works!"' -e 'end tell'

所以底线是你在iTune.scpt的某个地方显示一个对话框。在该脚本中,只需告诉iTunes或Finder显示它们。

答案 1 :(得分:0)

我的问题是设置了LSBackgroundOnly = YES的应用程序试图运行显示UI的AppleScript,例如display dialog ...

  

Error Domain = NSPOSIXErrorDomain代码= 2“没有这样的文件或目录”

     

AppleScript.scpt:执行错误:不允许用户交互。 (-1713)

如其他答案所示,使用tell application "Finder" ...等有效。

或者,删除LSBackgroundOnly键以启用UI AppleScript,而无需告知其他应用程序。

LSUIElement呈现了类似的模式-没有停靠图标,没有菜单栏等-但确实允许启动UI AppleScripts。