我们可以为这样的变量创建一个实时监控器:
CreatePalette@Panel@Row[{"x = ", Dynamic[x]}]
(如果x
恰好是$Assumptions
,这会更有趣,也很有用。设置一个值然后忘记它就很容易了。)
不幸的是,如果重新启动内核(Quit[]
,然后评估某些内容),这将停止工作。调色板不再显示x
值的变化。
有没有办法做到这一点,所以它在内核会话中保持工作?我发现自己经常重启内核。 (如果生成的调色板导致内核在Quit
之后自动启动,那很好。)
更新:正如评论中所提到的,事实证明只有在我们通过评估Quit[]
退出时,调色板才会停止工作。使用Evaluation -> Quit Kernel -> Local
时,它会继续有效。
答案 0 :(得分:3)
我只能猜测,因为在我的Ubuntu上,情况似乎有些不对劲。从Leonid建议的菜单中退出的技巧在这里不起作用。另一个是:在一个新的Mathematica会话上,只打开一个笔记本:
Dynamic[x]
x = 1
Dynamic[x]
x = 2
按预期给出
2
1
2
2
键入下一行Quit
,然后评估并输入x=3
只更新Dynamic [x]的第一行。
然而,你检查了命令
Internal`GetTrackedSymbols[]
这不仅提供了跟踪符号,还提供了动态内容所属的某种ID。如果您可以找到这些数字到底是什么,并在内部上下文中找到的其他函数中进行研究,您可以在重新启动内核后手动添加调色板动态内容。
我以为我有
这样的东西Internal`SetValueTrackExtra
但我目前无法重现这种行为。
答案 1 :(得分:3)
@ halirutan的回答激起了我的记忆......
你有遇到过:Experimental/ref/ValueFunction
? (文件地址)
虽然文档中没有包含任何示例,但有更多信息'部分提供以下花絮:
作业
ValueFunction[symb] = f
指定何时symb
获取新值val
,表达式f[symb,val]
应为 评价。