如何批量关闭苹果脚本对话框?

时间:2018-02-25 18:12:57

标签: python macos applescript

我从python中调用了一个苹果脚本对话框,如下所示:

import subprocess

applescript = """
display dialog "Some message goes here..." ¬
with title "This is a pop-up window" ¬
with icon caution ¬
buttons {"OK"}
"""

subprocess.call("osascript -e '{}'".format(applescript), shell=True)

但是,根据我的应用程序的某些条件,通知可能会进入100s,即太多的对话框可能排队等候,并通过点击各自的" OK"手动解除每个对话框。按钮不可行。所以我正在寻找的是另一个苹果脚本,我可以直接使用AppleScript编辑器,它可以为我清除这些对话框。奖金将是捕捉他们的文字和时间戳记到文本文件中,但只需清除它们就是我需要的东西。

我是Mac / applecipts的新手,并没有找到有效的解决方案。我尝试过以下方法:

tell application "System Events"
    tell process "NotificationCenter"
        set numwins to (count windows)
        repeat with i from numwins to 1 by -1
            click button "OK" of window i
        end repeat
    end tell
end tell

tell application "System Events"
    click button 1 of windows of application process "TextEdit"
end tell

有人可以指导我如何实现这一目标吗?谢谢!

可替换地,

如果有办法分开"分开"每次迭代的通知:

b =  """
display notification "All graphics have been converted 2." with title "My Graphic Processing Script" subtitle "Processing is complete." sound name "Frog"
"""
subprocess.call("osascript -e '{}'".format(a), shell=True)
那么,那也行得通。目前正在发生的事情是通知的每次迭代都堆叠在彼此之上 - 即,当生成多个通知时,我只看到最新的通知或此类通知的数量。我反而希望看到所有通知 - 可能将它们垂直堆叠 - 例如:第一个通知显示在右上方,当第一个通知出现在第一个通知消失之前,第一个通知可以向下推,第二个通知可以是显示在那之上。类似地,第三个可以向下推动第一个和第二个,然后在它们之上,依此类推。

这可以实现吗?

基本上,我需要查看所有此类通知的内容 - 被动或主动要求点击。但在这两种情况下,驳回通知都不应妨碍我的工作。这是一个监控应用程序,所以基于某些条件,它会以我的方式抛出通知 - 越接近实时,越好 - 这就是为什么我需要查看所有通知,因为它们出现,而不是写入某些csv或txt文件和我定期检查该文件 - 这将是一个不可持续的工作流程。

1 个答案:

答案 0 :(得分:1)

我不完全明白你想要完成的事情。如果您不喜欢对话框,为什么要在脚本中添加对话框。 无论如何,这里有几个想法:

  1. 添加

    放弃1

  2. 到你的显示对话框命令,它将在1秒后自动关闭每个方框。

    1. 代替对话框,如何将命令写入时间戳或文本文件中的任何内容。然后你可以查看文本文件,看看它是否全部有效。