2.10.6 笔记本中的按纽框和激活元素在笔记本的任意一个单元中都可以设置 ButtonBox 对象, 点击这些按纽时就会进行一些运算. 在 Mathematica 中,面板按纽、超链和其它激活元素是通过 ButtonBox 对象 实现的. 在一个单元中第一次输入一个 ButtonBox 对象时,它与其它表达式的特性相同,通过 点击可以选择和编辑它,但如果在 Cell Properties 菜单中选择了Cell Active 项后,就对该单元设置了 Active 选项,ButtonBox 就被激活, 点击后就会进行所指定的运算. 这里是一个按纽 Out[1]//DisplayForm=
 |
当这个按纽出现在激活的单元中时,点击时就会粘贴它的内容
 
这是一个典型的面板
在对应于这个面板的表达式中,每个按纽对应于一个 ButtonBox 对象
 
基本ButtonBox对象 通过设置 ButtonStyle 可以指定在默认状态下按纽怎样显示和按纽 怎样运行. 笔记本前端提供了大量的标准 ButtonStyle 设置,这些 设置可以通过 Create Button 和 Edit Button 菜单项访问. ButtonStyle选项的标准设置 这是对应于 CopyEvaluateCell 按纽的表达式
 
这是该按纽的外观
 
有一个选择的笔记本
 
点击该按纽后的效果
 
影响按纽行为的选项 一个特定的 ButtonStyle 设置为按纽的其它选项指定默认值. 这些选项中的一部分会影响按纽 的显示,其它的会影响按纽的行为. 最终决定一个按纽行为的是 ButtonFunction 选项的设置. 该设置给出了点击按纽时将执行的 Mathematica 函数. 这个函数一般是各种笔记本操作命令的组合. 例如,在最基本的形式中,Paste 按纽有一个由 NotebookApply[SelectedNotebook[ ], #]& 给出的 ButtonFunction ,而 Hyperlink 按纽有一个由 NotebookLocate[#2]& 给出的 ButtonFunction. 点击一个按纽后,ButtonFunction 需要两个变量,第一个由 ButtonSource 指定,第二个由 ButtonData 指定. ButtonData 一般是一个固定的表达式,它在创立按纽时定义,而 ButtonSource 一般随着按纽的内容和所处的环境发生改变. ButtonSource选项的设置 简单 Paste 按纽的 ButtonSource 设置一般是 ButtonContents. 这意味着按纽上所显示的就是要作为按纽函数的第一个变量去粘贴的. 按纽函数能选取这个变量并把它送给 NotebookApply,于是它被粘贴在 笔记本上. 对 ButtonSource 使用 ButtonContents 以外的设置时,能产生对所处环境的各个方面 进行处理的按纽. 例如,设置 ButtonSource->Cell 时,按纽函数的第一个 变量是表示按纽所在的整个单元的表达式,用按纽函数操作这个表达式时, 该按纽就对整个单元有影响,例如按某些指定方式重新构造它. ButtonEvaluator 选项设置 找到 ButtonFunction 的变量和构造出表达式后,接下来的问题是应该将 这个表达式送到何处去计算. ButtonBox 的 ButtonEvaluator 选项用来指定这个位置. 一般地,若这个表达式涉及 Mathematica 函数的一个范围,就必须在一个实际的 Mathematica 内核中计算它. 但如果这个表达式仅涉及简单的笔记本操作命令, 则就有可能在前端直接计算它,甚至不涉及内核.这可以通过设置选项 ButtonEvaluator->None 来实现. 直接在前端执行的表达式 像上节所讨论的一样,标准笔记本前端仅能处理一定量的命令,这些命令可以 从 FrontEnd` 上下文中看出. 但这些指令足以用来完成所有与Paste, EvaluateCell 和 Hyperlink 等标准按纽风格有关的任务. 注意,即使将一个表达式送到前端,也只有包含在 FrontEndExecute 内时才执行它.
|