Python 如何批量关闭apple脚本对话框?

Python 如何批量关闭apple脚本对话框?,python,macos,applescript,Python,Macos,Applescript,我从python调用apple脚本对话框,如下所示: 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

我从python调用apple脚本对话框,如下所示:

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)
但是,基于我的应用程序的某些条件,通知可能会进入100秒,即太多的对话框可能会排队,通过单击各自的“确定”按钮手动取消每个对话框是不可行的。所以我要找的是另一个苹果脚本,我可以直接从applescript编辑器中使用它来为我清除这些对话框。一个额外的好处是将它们的文本和时间戳捕获到一个文本文件中,但我需要的是清除它们

我是Mac/applescipts新手,尚未找到有效的解决方案。我尝试了以下方法:

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

有人能指导我如何做到这一点吗?谢谢

或者

如果有一种方法可以为以下各项的每次迭代“分离”通知:

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年后放弃

  • 显示对话框命令,该命令将在1秒后自动关闭每个框

  • 代替对话框,将命令改为向文本文件写入时间戳或其他内容如何。然后,您可以检查文本文件,以查看所有的工作

  • 您必须在对话框中选择选项还是仅选择“确定”?如果没有选项,为什么不使用osx通知中心呢?AppleScript
    显示对话框
    会创建一个模式窗口,因此会停止脚本中的任何进一步处理,直到退出,那么它们是如何排队的呢?此外,您的OP中似乎存在一些矛盾,一方面您说“额外的好处是将他们的文本和时间戳捕获到一个文本文件中”,然后说“而不是写入某个csv或txt文件,我会定期检查该文件”。那么到底是哪一个,您真正想要什么?不管怎样,您正在调用
    osascript
    来显示对话框,并以编程方式单击“确定”按钮,基于您使用单个按钮“确定”显示的代码,您将使用:
    告诉应用程序“系统事件”来单击进程“osascript”窗口1的按钮1
    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)