我创建了一个自定义调色板,其中ActionMenu
执行ClearAll["Global`*"]
. 它执行所需的操作,但前端不会立即将颜色从黑色更新为蓝色(标准),因为它发生在ClearAll["Global`*"]
直接从笔记本单元执行时(它仅在执行其他操作后更新)。有没有办法启动前端显示状态的刷新?
编辑:显然,当我从调色板加载包时也会发生同样的情况(蓝色不会立即更新为黑色)。
我创建了一个自定义调色板,其中ActionMenu
执行ClearAll["Global`*"]
. 它执行所需的操作,但前端不会立即将颜色从黑色更新为蓝色(标准),因为它发生在ClearAll["Global`*"]
直接从笔记本单元执行时(它仅在执行其他操作后更新)。有没有办法启动前端显示状态的刷新?
编辑:显然,当我从调色板加载包时也会发生同样的情况(蓝色不会立即更新为黑色)。
不完全优雅,但它有效(主循环必须在 ClearAll 之后调用一次):
ActionMenu["Clear",
{"Clear global variables" :> (ClearAll["Global`*"];
Block[{nb}, nb = CreateDocument[ExpressionCell[42, "Input"],
Visible -> False]; SelectionMove[nb, All, Notebook];
SelectionEvaluate[nb]; NotebookDelete[nb];])}]
当然,应该使用新的 Mathematica 8 NotebookEvaluate 函数,但在这里似乎不起作用(即,
ActionMenu["Clear",
{"Clear global variables" :> (ClearAll["Global`*"];
Block[{nb}, nb = CreateDocument[ExpressionCell[42, "Input"],
Visible -> False]; NotebookEvaluate[nb];
NotebookDelete[nb];])}]
给出错误信息
Could not process unknown packet "1".