我想问一下是否有人之前遇到过这样的问题。 我的版本是8.01,运行在 Windows 7 64 位SP1 上。
我一直试图找出为什么在我编写的代码中添加Tooltip[]命令时,Mathematica内核会崩溃。
笔记本电脑带有Wolfram演示样式表(用于制作演示文稿的示例样式表)。它是一个Manipulate,全部在一个单元格中。
当我将代码复制到具有默认样式表的新笔记本电脑中时,崩溃就消失了! 我无法在新笔记本电脑中重现崩溃。
完全没有代码更改。 只需将整个单元格复制并粘贴到新笔记本电脑中即可。唯一的区别是一个具有演示文稿样式表,另一个是默认样式表。当我将新笔记本电脑的样式表更改为Demostration时,我发现Tooltip的效果不如以前好。当我在此样式下使用示例笔记本电脑并开始移动鼠标时,内核崩溃。
为了确保,我多次尝试这样做。同样的结果。一旦我添加了Tooltip [],当样式表是演示时,内核立即崩溃。
我的问题:有人看到过这种行为吗? 如果可以的话,我可以提供这两个笔记本电脑。
我遇到的崩溃是:
Problem signature:
Problem Event Name: BEX64
Application Name: Mathematica.exe
Application Version: 8.0.31.32201
Application Timestamp: 4d65e0e8
Fault Module Name: StackHash_2766
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Offset: 0000000000000001
Exception Code: c0000005
Exception Data: 0000000000000008
OS Version: 6.1.7601.2.1.0.768.3
Locale ID: 1033
Additional Information 1: 2766
Additional Information 2: 2766660d255034f6e73a8cd527b6f51e
Additional Information 3: 8ab7
Additional Information 4: 8ab74987ae95fade363a8e7256e3890f
我已向WRI发送了一个错误报告。
我的问题是:是否有人遇到过这样的问题,即样式表更改会使代码行为不同?为什么样式表更改会导致这样的问题?
更新1:
我已经能够创建一个小例子,展示部分问题。我正在努力制作另一个小例子,展示崩溃本身。但是下面的例子展示了问题,即当样式表为demonstration时,Tooltip的工作方式不同。首先,这里是一个屏幕截图,左边是默认样式表中的同一段代码,右边是演示样式表中的代码。
(在图片下方,我粘贴了源代码,并列出了如何重现该问题的步骤)
Manipulate[
EventHandler[Dynamic[Graphics[
{
Circle[{0,0},1],
Dynamic@Tooltip[Text[Style["O",Red,16] ,pt],Style[pt]]
},
ImageSize->250, PlotRange->{{-1,1},{-1,1}}
],ContinuousAction->True],
"MouseDragged":>
( pt=MousePosition["Graphics"] )
],
{{pt,{0,0}},ControlType->None},
TrackedSymbols:> {None},
ContinuousAction->True
]
步骤:
- 将上述代码粘贴到新的样式表中,使用默认样式。拖动点,您应该看到坐标一直显示,随着鼠标拖动点。
- 文件-> 新建->演示,并将相同的代码粘贴到替换已在那里的小模板的 Manipulate 单元格中。
- 现在做同样的事情,拖动点。您会发现工具提示不会像鼠标拖动时那样显示。只有在将鼠标保持稳定状态停留在点上时才会显示它。
动态效果似乎会导致这种不同的行为,或者是样式中的其他问题。
我尝试了不同的样式表,其中工具提示正常运行。只有在演示样式表中,我才遇到了这个工具提示的问题。
如果有人有解决办法,那就太好了。因为我想在演示中使用工具提示。
我将尝试制作一个也会导致崩溃的示例。
更新:
我已经从 WRI 技术支持中得到了回复。这是一个样式表问题。与此同时,作为技术支持的一个解决方法是:
I was able to reproduce the kernel crash. It looks like a demonstration
stylesheet issue related to imagesize fit.
At the top of the demonstration notebook there is tab called 'Tools',
clicking on it gives you an option called 'Resize Notebook to Fit'. On
resizing the notebook and saving it the kernel crash does not happen.
感谢WRI技术支持。
2011年12月2日更新根据John Fultz下面的答案,我现在关闭了这个问题。谢谢John。
BaseStyle -> {TooltipBoxOptions -> {TooltipDelay -> 0}}
添加到您的Manipulate
中以解决此问题。 - John Fultz