首页 > 解决方案 > AppleScript:带有多行按钮的对话框

问题描述

像这样的代码display dialog "choose" buttons {"yes", "no"}在一行中创建了一个带有 2 个按钮的对话框,正如预期的那样。

我试图找出是否可以创建多行按钮。

例如,第一行可能有按钮{"red", "yellow", "blue"},第二行可能是{"large", "small"},第三行可能只是{"cancel"}

可能吗?

标签: applescript

解决方案


由于 AppleScript 被设计为一个自动化系统,而不是一种成熟的编程语言,因此它一直将其 GUI 限制为简单的“警报”式面板。这个想法是脚本应该尽可能少地打扰用户,显示询问单条信息的对话框,然后让开,以便脚本可以或多或少地不可见地工作。它的本机警报最多有三个按钮(在“是”、“否”、“取消”模型上)。处理多于三个项目的选择的唯一本地方法是使用choose from list命令,例如:

set meal to choose from list {"Hamburger", "Pizza", "Spaghetti", "Cucumber Salad", "Pork Chops", "Green Eggs and Ham"} with title "Meal Time" with prompt "What do you want to eat?"

这会产生这样的警报:

在此处输入图像描述

虽然可以使用 AppleScriptObjC 创建带有多行按钮的多按钮警报,但这是一项不平凡的任务:付出很多努力却收获很少。基本上,必须使用 创建一个新警报NSAlert,然后创建并附加一个附件视图,您已在其中添加并定位了NSButtons. 您还必须添加一些逻辑,以便您创建的附件视图按钮充当“警报”按钮(这意味着它们在单击时会关闭警报)。Stack Overflow 并不真正适用于编码服务——尽管人们偶尔会打破这个规则——但如果你想自己完成大部分编码工作,我们很乐意帮助你解决困难。


推荐阅读