5

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

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

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

    在运行时告诉应用程序“AppleScript Runner” main() end tell end run

  2. 我试图在 python import os def main(): os.system ('osascript -e "tell application "ApplesScript Runner" do script /Users/eee/applescript/iTune.scpt end tell"')

    if name == ' main ': main() 两种方法都行不通。谁能告诉我如何正确地做到这一点?

4

2 回答 2

14

这是一个常见的错误。当您从 shell 使用 OSAScript 运行脚本时,您必须告诉应用程序显示任何“显示对话框”或“选择列表对话框”或任何需要用户交互的内容。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 显示它们。

于 2012-11-21T00:32:17.323 回答
0

我的问题是一个应用程序LSBackgroundOnly = YES尝试运行显示 UI 的 AppleScript,例如display dialog ...

错误域 = NSPOSIXErrorDomain 代码 = 2“没有这样的文件或目录”

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

使用tell application "Finder" ...or 等​​工作,如另一个答案所示。

或者,在LSBackgroundOnly不告诉其他应用程序的情况下删除启用 UI AppleScripts 的密钥。

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

于 2018-11-09T00:16:29.740 回答