Может ли блокнот StyleSheet изменить поведение кода? - PullRequest
16 голосов
/ 23 июля 2011

Я хотел бы спросить, была ли у кого-то такая проблема раньше.У меня версия 8.01, на windows 7, 64 бит.SP1.

Я пытался выяснить, почему происходит сбой ядра Mathematica при добавлении команды Tooltip [] к коду, который я пишу.

В записной книжке есть таблица стилей демонстрации Wolfram (Пример таблицы стилей, из которой можно делать демонстрации).Это манипулятор, все в одной ячейке.

Когда я копирую код в новую записную книжку с таблицей стилей по умолчанию, сбой исчезает!Я не могу воспроизвести сбой в новом ноутбуке.

Код не изменяется вообще.Просто скопировал всю ячейку и вставил ее в новый блокнот.Разница лишь в том, что у одного есть таблица стилей Demonstration, а у одного - таблица стилей по умолчаниюКогда я меняю таблицу стилей новой записной книжки на Demostration, я замечаю, что подсказка не работает так же хорошо, как раньше.Когда я использую блокнот «Пример» в этом стиле, в тот момент, когда я начинаю двигать мышь с помощью всплывающей подсказки, происходит сбой ядра.

Чтобы убедиться, что я делал это несколько раз.Тот же результат.Когда я добавляю подсказку [], ядро ​​сразу падает, только когда таблица стилей является демонстрационной.

Мой вопрос: кто-нибудь видел такое поведение?Я могу сделать две записные книжки доступными, если это нормально.

Сбой, который я получаю:

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:

Мне удалось сделать небольшой пример, который показывает часть проблемы.Я работаю над созданием еще одного небольшого примера, который показывает сам сбой.Но этот пример ниже показывает проблему, которая заключается в том, что всплывающие подсказки не работают одинаково, когда таблица стилей является демонстрационной.Во-первых, вот снимок экрана, бок о бок, тот же код, слева - таблица стилей по умолчанию, а справа - стиль демонстрации

(под изображением я вставляю исходный код, пошагово какдля воспроизведения проблемы)

enter image description here

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. Файл-> Новый-> Демонстрация и вставьте туда же код в ячейку Манипулировать, заменив маленький шаблон.уже здесь.
  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.

Благодаря технической поддержке WRI.

обновление 2 декабря 2011 На основе ответа Джона Фульцаниже я сейчас закрываю этот вопрос.Спасибо Джон.

1 Ответ

2 голосов
/ 21 июля 2012

(Этот ответ на самом деле принадлежит Джону Фульцу - см. Комментарии к исходному вопросу. Я превращаю его в ответ, чтобы этот вопрос перестал отображаться в списке вопросов без ответов. Очевидно, что именно Джон заслуживаетлюбая репутация указывает на это, Джон, если вы опубликуете ответ здесь, я проголосую и удалю мой.)

Причина, по которой ваша всплывающая подсказка не появляется в демонстрационной версии, заключается в том, что Demonstration таблица стилей устанавливает ненулевую задержку для всплывающих подсказок, чтобы они появлялись только после наведения на них в течение определенного промежутка времени.В частности, это означает, что они не будут появляться при перетаскивании.

Вы можете отменить это, установив задержку на ноль на Manipulate;Сделайте это, добавив следующую опцию к вызову Manipulate.

BaseStyle -> {TooltipBoxOptions -> {TooltipDelay->0}}
...