Sza*_*lcs 7 wolfram-mathematica dynamic mathematica-frontend
我们可以为这样的变量创建一个实时监视器:
CreatePalette@Panel@Row[{"x = ", Dynamic[x]}]
Run Code Online (Sandbox Code Playgroud)
(如果x
恰好是类似的话,这会更有趣和有用$Assumptions
.设置一个值然后忘记它就很容易了.)
不幸的是,如果重新启动内核(Quit[]
然后评估一些内容),这将停止工作.调色板不会再显示值的变化x
.
有没有办法做到这一点,所以它在内核会话中保持工作?我发现自己经常重启内核.(如果生成的调色板导致内核在完成后自动启动Quit
.)
更新: 如评论中所述,事实证明,只有在我们通过评估退出时,调色板才会停止工作Quit[]
.使用时Evaluation -> Quit Kernel -> Local
,它会继续工作.
我只能猜测,因为在我的 Ubuntu 上,情况似乎有问题。像列昂尼德建议的那样从菜单中退出的技巧在这里不起作用。另一种是:在仅打开一个笔记本的新 Mathematica 会话中:
Dynamic[x]
x = 1
Dynamic[x]
x = 2
Run Code Online (Sandbox Code Playgroud)
按预期给出
2
1
2
2
Run Code Online (Sandbox Code Playgroud)
输入下一行Quit
,评估并输入,然后x=3
仅更新 Dynamic[x] 的第一行。
不过,你检查过命令吗
Internal`GetTrackedSymbols[]
Run Code Online (Sandbox Code Playgroud)
这不仅提供了跟踪的符号,还提供了动态内容所属的某种 ID。如果您可以找出这些数字到底是什么,并在内部上下文中找到的其他函数中进行调查,则可以在重新启动内核后手动添加调色板动态内容。
我以为我有类似的东西
Internal`SetValueTrackExtra
Run Code Online (Sandbox Code Playgroud)
但我目前无法重现该行为。