Sza*_*lcs 8 wolfram-mathematica initialization mathematica-frontend
有时,最好为调色板(按钮)设置一些初始化代码.例如,它可以定义调色板按钮使用的一些函数.
为调色板定义/运行初始化代码的最简单和最好的方法是什么?
CreatePalette等)Joh*_*ltz 10
你是一个关心Dynamic成为一个问题的可见性的你是对的.Dynamic无论任何单个单元的可见性如何,绝对保证要评估表达式的方法是使用NotebookDynamicExpression.这是一个示例,说明NotebookDynamicExpression在Dynamic失败时工作,因为它隐藏在一个封闭的单元格组中:
cell1 = First @ MakeBoxes[
TextCell["Click to open", "Title",
CellMargins -> 0, System`WholeCellGroupOpener -> True],
StandardForm];
cell2 = First @ MakeBoxes[
ExpressionCell[DynamicWrapper["hidden cell", Print["DynamicWrapper"]]],
StandardForm];
CreatePalette[
Notebook[{Cell[CellGroupData[{cell1, cell2}, Closed]]},
NotebookDynamicExpression :>
Dynamic[Refresh[Print["NotebookDynamicExpression"], None]]]]
Run Code Online (Sandbox Code Playgroud)
评估时,请注意Dynamicin in NotebookDynamicExpression立即评估.在DynamicWrapper您打开单元格组之前永远不会进行评估,您可以通过单击"单击以打开"文本来执行此操作.
在这个例子中,顺便说一句,请注意,我的包裹NotebookDynamicExpression用Refresh.该函数Refresh[#, None]&将确保代码仅评估一次 - 首次打开笔记本时.否则,代码将遵循标准属性Dynamic并在任何依赖项发生更改时进行评估.
NotebookDynamicExpression自v6以来一直存在,但仅在v8中记录.还记录了它的相关堂兄弟,CellDynamicExpression和FrontEndDynamicExpression.