创建面板

面板如同键盘的延伸. 它们可以用来执行 Wolfram 语言中的许多操作,包括输入排版字符,对笔记本进行样式化处理以及进行各种计算. 如任何笔记本相同,可以使用菜单项创建面板,也可以通过编程创建面板.
CreatePalette[expr]
在前端中,创建并且打开包含 expr 的一个面板笔记本
PaletteNotebook[{cell1,cell2,}]
一个面板笔记本的单元内表示,前端可以对其进行操作
面板创建工具.
面板笔记本具有一个独特的属性. 它们可以是一个当前选中的笔记本,但是通常不能是一个 InputNotebook. 这使得面板可以在前端键盘输入所指向的笔记本上执行操作. 更多信息,请见 "通过内核操作笔记本".
通过编程生成一个面板
CreatePalette[expr] 创建一个包含 expr 的未保存面板笔记本,并且在一个不同的窗口打开. 如要保存这个面板,关闭该窗口,并且当保存对话框出现时保存该文件,或者利用 NotebookSave 通过程序保存该面板笔记本.
下面的面板利用 PasteButton 把字符粘贴到输入笔记本中. PasteButton 专门设计用于面板的使用. 它把内容直接粘贴到输入笔记本的插入点上. 当与 RawBoxes 一起使用时,PasteButton 会把未解释的框符粘贴到输入笔记本上.

1.gif

另外一种途径是,利用 PaletteNotebook 创建一个面板笔记本的单元内表示. 通过点击 按钮或者在 PaletteNotebook 表达式外加上 CreatePalette,就可以在前端打开包含该笔记本的一个独立窗口.
由于 RawBoxes[boxes] 只是在字面上插入 boxes 并未做进一步解释,该字符可以用作输入表达式或者文本单元的一部分使用.
Cell[BoxData["\<\"π\"\>"],"cellstyle"]
已解释的框符结构
Cell[BoxData["π"],"cellstyle"]
未解释的框符结构
框符结构比较.
输入单元:
文本单元:

π ° × ÷ ¬

如果把 "π" 的框符结构解释为面板中的一个字符串,那么无论该单元样式如何,前端会一直把 "π" 视为一个字符串处理.
输入单元:
文本单元:
"π"
下面的这个面板利用前端令牌把带有样式的单元插到正在使用的笔记本中. 前端令牌从内核执行原先通常使用菜单完成的前端命令. 对于前端令牌的一个完整列表,参见 "前端令牌".

3.gif

下面的面板链接到 Wolfram Mathematica 参考资料中心,使得在输入笔记本中可以删除所有输出单元,并且也可以退出内核.
CreatePalette 用以创建某些 Wolfram 语言面板,包括 数学助手 面板.

4.gif

完成并保存面板
CreatePalette 创建了一个带有各种选项集的笔记本,这样的选项集使得所产生的面板的外观和行为在典型意义上都是适当的. 然而,选项如 MagnificationDynamicUpdating 也可能是有用的.

1.  若要通过编程设置这些选项,必须在一个 CreatePalette 语句中指定上述的每个选项. 例如:

CreatePalette[expr,Magnification->1.0,DynamicUpdating->True]

注意:只有当面板函数功能被完全调试好,并且处于即可使用的状态时,设置 DynamicUpdating->True 才能完成,因为这样做可以防止前端退出可能含有也可能不含有程序错误的一次动态计算.

2.  若要通过 选项设置 设置这些选项,选择面板并且打开 选项设置

笔记本选项 显示选项,明确设置 Magnification 以避免从全局设置继承缩放率.

单元选项 计算选项,明确设置 DynamicUpdating->True 以启用 Dynamic,即使动态更新在用户前端是禁用的.

如要保存该面板,点击面板窗口上的关闭按钮,您就可以得到提示信息,可以保存该面板或者利用 NotebookSave 通过编程保存该面板笔记本.
把面板安装到 Wolfram 语言中
一个面板必须安装到 PalettePath 上,这样它才能出现在主 面板 菜单中.
最简单的安装面板的方式是选择 面板 安装面板,提供源文件、面板名称和安装目录给 安装 Wolfram 系统项目 对话框,然后点击 完成.

5.gif

面板也可以作为 Wolfram 语言应用程序的一部分安装. 若要对您的应用程序添加一个面板,可在应用程序文件夹中创建一个 FrontEnd\Palettes\ 目录,然后把该面板保存到该目录中. 例如,面板 MyPalette.nb 应该放置于MyApplication\FrontEnd\Palettes\ 中.
扩展范例

非独立启动开关视窗

Dynamic 的第二个变量可以用来控制一个相反的启动开关视窗的状态,以使得在任何给定的时间内只有一个视窗是开启的.

6.gif

也可以利用 TaggingRules 跟踪并且控制面板状态. 与动态变量不同,前端自动对 TaggingRules 进行缓存,以使得安装好的面板可以在多个前端进程中记住各个控件对象的状态,即使不能保存它们. 本章节不专门讨论这个问题,在 "存储并跟踪面板状态" 中对此有详细讨论,并且还提供了一组范例.

应用并且计算函数

面板可以运行计算,并且把结果返回给一个笔记本.
考虑下面的多项式. 突出显示该表达式,并且从上面的面板中选择 Expand[]. Wolfram 语言将对选择的内容应用该函数,并在适当的位置计算所得的表达式.
应用该函数之前
应用该函数之后