16

想问问以前有没有人遇到过这样的问题。我有 8.01 版,在 Windows 7 上,64 位。SP1。

当我向我正在编写的一些代码中添加 Tooltip[] 命令时,我一直在试图找出为什么会出现 Mathematica 内核崩溃。

笔记本有 Wolfram 演示样式表(用于进行演示的示例样式表)。它是一个 Manipulate,都在一个单元格中。

当我将代码复制到具有默认样式表的新笔记本中时,崩溃就消失了!我无法在新笔记本中重现崩溃。

完全没有代码更改。只需复制整个单元格并将其粘贴到新笔记本中即可。唯一的区别是一个有演示样式表,一个是默认样式表。当我将新笔记本的类型表更改为演示时,我注意到工具提示不像以前那样工作。当我以这种风格使用示例笔记本时,当我开始使用工具提示移动鼠标时,内核崩溃。

为了确保,我做了几次。结果相同。一旦我添加了 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:

我能够制作一个小例子来说明问题的一部分。我正在制作另一个显示崩溃本身的小例子。但是下面这个例子就说明了问题,就是在样式表演示的时候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
]

脚步:

  1. 将以上代码粘贴到新样式表中,样式默认。拖动点,当您用鼠标拖动点时,您应该会一直看到坐标显示。
  2. File->New->Demonstration,然后在 Manipulate 单元格中粘贴相同的代码,替换已经存在的小模板。
  3. 现在做同样的事情,拖动点。您将看到工具提示不会在鼠标拖动时显示。它仅在将鼠标稳定在该点上时才会显示。

动力学中有不同的行为似乎导致了这种情况,或者这种风格的其他原因。

我尝试了不同的样式表,工具提示在那里工作正常。只有使用演示样式表时,工具提示才会出现此问题。

如果有人对此有解决方案,那就太好了。因为我想在演示中使用工具提示。

我将尝试举一个导致崩溃的示例。

更新:

我已经从 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.

感谢世界资源研究所的技术支持。

2011 年 12 月 2 日更新 根据下面的 John Fultz 回答,我现在要结束这个问题。谢谢约翰。

4

1 回答 1

2

(这个答案实际上是由于 John Fultz - 请参阅原始问题下的评论。我将其转换为答案,以便该问题不再出现在未回答的问题列表中。显然,实际上是 John 值得任何声誉点为此;约翰,如果您在此处发布答案,那么我将投票并删除我的答案。)

您的工具提示未出现在演示版本中的原因是Demonstration样式表对工具提示设置了非零延迟,因此它们仅在将鼠标悬停在它们上方一段时间后才会出现。特别是,这意味着它们在拖动时不会出现。

您可以通过将延迟设置为零来扭转这种情况ManipulateManipulate通过在调用中添加以下选项来做到这一点。

BaseStyle -> {TooltipBoxOptions -> {TooltipDelay->0}}
于 2012-07-21T00:21:29.903 回答