gde*_*ino 14 wolfram-mathematica mathematica-frontend
任何人都可以指出为什么这在Mathematica 8中不起作用:
DynamicModule[{x = Pink},
Row[
{Style["Hello", x],
Mouseover[
x = Green; "World",
x = Blue; "World"]}]]
Run Code Online (Sandbox Code Playgroud)
当我将鼠标移到"世界"时,我期望看到"Hello"的颜色发生变化.我得到的是粉红色的"你好",永远不会改变颜色.
Mr.*_*ard 10
我想我已经等了很久才公平.这是我的建议:
DynamicModule[{x = Pink},
Row[{
Dynamic@Style["Hello", If[MouseAnnotation[] === 1, x = Green; Blue, x]],
Annotation["World", 1, "Mouse"]
}]
]
Run Code Online (Sandbox Code Playgroud)
尝试使用EventHandler与"MouseEntered"和"MouseExited":
DynamicModule[{c = Pink}, Row[{
Style["Hello", FontColor -> Dynamic[c]],
EventHandler[
"World", {
"MouseEntered" :> (c = Blue),
"MouseExited" :> (c = Green)
}]}]]
Run Code Online (Sandbox Code Playgroud)
快速检查显示Mouseover在您第一次启动它时评估其中的所有表达式:
Mouseover[Print["One"]; 1, Print["Two"]; 2]
Run Code Online (Sandbox Code Playgroud)
实际Mouseover修改x值的惯用方法是使用MouseAnnotation.Wizard先生的回答描述了如何实现这一目标.
作为替代方案,你可以做类似的事情
DynamicModule[{col = Pink},
Row[{Style["Hello ", FontColor -> Dynamic[col]],
Dynamic@If[CurrentValue["MouseOver"],
col = Green; "World",
col = col /. Green -> Blue; "World"]}]
]
Run Code Online (Sandbox Code Playgroud)