创建面板

面板如同键盘的延伸. 它们可以用来执行 Wolfram 语言中的许多操作,包括输入排版字符,对笔记本进行样式化处理以及进行各种计算. 如任何笔记本相同,可以使用菜单项创建面板,也可以通过编程创建面板.

CreatePalette[expr]在前端中,创建并且打开包含 expr 的一个面板笔记本
PaletteNotebook[{cell1,cell2,}]一个面板笔记本的单元内表示,前端可以对其进行操作
面板 把选择变成面板
在前端中,从当前选择创建一个面板笔记本

面板创建工具.

面板笔记本具有一个独特的属性. 它们可以是一个当前选中的笔记本,但是通常不能是一个 InputNotebook. 这使得面板可以在前端键盘输入所指向的笔记本上执行操作. 更多信息,请见 "通过内核操作笔记本".

通过编程生成一个面板

CreatePalette[expr] 创建一个包含 expr 的未保存面板笔记本,并且在一个不同的窗口打开. 如要保存这个面板,关闭该窗口,并且当保存对话框出现时保存该文件,或者利用 NotebookSave 通过程序保存该面板笔记本.

下面的面板利用 PasteButton 把字符粘贴到输入笔记本中. PasteButton 专门设计用于面板的使用. 它把内容直接粘贴到输入笔记本的插入点上. 当与 RawBoxes 一起使用时,PasteButton 会把未解释的框符粘贴到输入笔记本上.

另外一种途径是,利用 PaletteNotebook 创建一个面板笔记本的单元内表示. 通过点击 按钮或者在 PaletteNotebook 表达式外加上 CreatePalette,就可以在前端打开包含该笔记本的一个独立窗口.

In[2]:=
Click for copyable input
Out[2]=

由于 RawBoxes[boxes] 只是在字面上插入 boxes 并未做进一步解释,该字符可以用作输入表达式或者文本单元的一部分使用.

Cell[BoxData["\<\"π\"\>"],"cellstyle"]已解释的框符结构
Cell[BoxData["π"],"cellstyle"]未解释的框符结构

框符结构比较.

输入单元:
Click for copyable input
文本单元:

π ° × ÷ ¬

如果把 "π" 的框符结构解释为面板中的一个字符串,那么无论该单元样式如何,前端会一直把 "π" 视为一个字符串处理.

输入单元:
Click for copyable input
文本单元:

"π"

下面的这个面板利用前端令牌把带有样式的单元插到正在使用的笔记本中. 前端令牌从内核执行原先通常使用菜单完成的前端命令. 对于前端令牌的一个完整列表,参见 "前端令牌".

下面的面板链接到 Wolfram Mathematica 参考资料中心,使得在输入笔记本中可以删除所有输出单元,并且也可以退出内核.

In[2]:=
Click for copyable input
In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=

CreatePalette 用以创建某些 Wolfram 语言面板,包括 数学助手 面板.

把选择变成面板

面板也可以通过选择一个单元或者它的内容,然后选择 面板 把选择变成面板 来创建. 如要保存该面板,关闭窗口,并且在出现保存对话框时保存该文件.

例如,对于下面的网格,它把输入模板粘贴到输入笔记本中.

In[76]:=
Click for copyable input
Out[76]=

通过选择该网格并且选择 面板 把选择变成面板 来创建一个面板. 则在另一个不同的窗口中将会出现该未保存的面板.

5.gif

虽然这样做有时候对于临时使用或者做一些试验是有用的,但是这不是面板开发的最佳方式. 利用 CreatePalette,用户可以编写这样的程序:当运行这个程序的时候,面板的创建可以完全自动地生成. 菜单项要求手动干预,这容易产生错误. 如果用户想要修改面板或者更正程序错误,这可能导致创建的面板不容易重新创建.

完成并保存面板

默认情况下,CreatePalette面板 把选择变成面板 创建了一个带有各种选项集的笔记本,这样的选项集使得所产生的面板的外观和行为在典型意义上都是适当的. 然而,选项如 Magnification 也可能是有用的.

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

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

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

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

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

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

如要保存该面板,点击面板窗口上的关闭按钮,您就可以得到提示信息,可以保存该面板或者利用 NotebookSave 通过编程保存该面板笔记本.

把面板安装到 Wolfram 语言中

一个面板必须安装到 PalettePath 上,这样它才能出现在主 面板 菜单中.

In[10]:=
Click for copyable input
Out[10]=

最简单的安装面板的方式是选择 面板 安装面板,提供源文件、面板名称和安装目录给 安装 Mathematica 项目 对话框,然后点击 完成.

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

扩展范例

非独立启动开关视窗

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

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

应用并且计算函数

面板可以运行计算,并且把结果返回给一个笔记本.

In[17]:=
Click for copyable input
Out[17]=

考虑下面的多项式. 突出显示该表达式,并且从上面的面板中选择 Expand[]. Wolfram 语言将对选择的内容应用该函数,并在适当的位置计算所得的表达式.

应用该函数之前
Click for copyable input
应用该函数之后
Click for copyable input