【问题标题】:Input Dialog Box Reappears when it is "on idle" in Applescript输入对话框在 Applescript 中“空闲”时重新出现
【发布时间】:2012-01-20 14:08:51
【问题描述】:

我的 Applescript 中有此功能,其中向用户显示输入对话框以输入一些文本。此对话框代码在"on idle" "end idle" 内,每 3 秒重复一次。

问题是当显示此对话框并且用户没有输入任何详细信息并保持对话框打开时,一分钟左右后此对话框仍然存在但出现另一个对话框(相同的重复) .我应该如何在"on idle"任何人内部处理这个问题?

代码分解如下,供参考。

on idle
  try           
    tell application "iTunes"
        repeat

             set loginbutton to display dialog "Enter your facebook log in name to start using XXX." default answer loginusername with title "XXX Log In" buttons {"Quit", "OK"} default button 2
             display dialog "loginbutton = " . loginbutton

             end repeat
             end tell
  end try
  return 3
end idle

【问题讨论】:

  • Hmmmm...当您想关闭应用程序时,您是否尝试过拨打quit
  • 一个普通的 AppleScript 只会坐在那里等待对话框的响应 - 这是在 AppleScript Studio 中还是什么?空闲处理程序并不是真正的对话方式 - 你想做什么?
  • 只是一个旁注,但您是否将loginusername 变量声明为全局变量?
  • @fireshadow52:是的,当我想关闭应用程序时退出工作。 loginusername 被声明为全局。
  • @Red_Menace:AppleScript Studio 没有这样做。保存为“保持打开”的普通脚本文件。基本上我让用户输入登录详细信息,然后从服务器检查。如果登录不正确,则显示另一个对话框,说明输入的登录不正确并退出应用程序。

标签: applescript itunes repeat python-idle


【解决方案1】:

在常规 AppleScript 中,当您创建一个对话框时,脚本会等到对话框关闭后再继续。我无法得到您所描述的症状,尽管您的示例 sn-p 不完整且有点错误 - 您处于重复(永远)循环中,无法逃脱,因为您还捕获了所有错误。

idle 处理程序并不是真正适合这样的地方 - 当您的应用程序空闲时调用此处理程序,因此每次脚本运行时都会运行其中的任何代码什么都不做。

如果您只是想要一个重复的对话框,直到返回正确的答案,您可以在主运行处理程序中使用类似以下的内容

repeat -- forever
    display dialog "this is a test, so enter something with \"test\"" default answer "test"
    set theAnswer to text returned of the result
    if theAnswer contains "test" then exit repeat -- success
end repeat
log theAnswer

请注意,虽然对话框的取消按钮会生成“用户取消”错误,但在保持打开脚本中,脚本不会因错误而退出,因此您需要自行处理错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多