我想使用一对滑块为两个变量 nLo 和 nHi 设置整数值,每个变量可以单独设置为1到100,但受制于 nHi> = nLo 的限制。所以我为每个变量设置了一个滑块,其范围依赖于另一个变量:
nLo = 1; nHi = 100;
Column[
{
Labeled[Slider[Dynamic[nLo], {1, Dynamic[nHi], 1},
Appearance -> "Labeled"], "nLo", Left
],
Labeled[Slider[Dynamic[nHi], {Dynamic[nLo], 100, 1},
Appearance -> "Labeled"], "nHi", Left
],
Dynamic[{nLo, nHi}]
}
]
问题在于,只要我调整 nHi ,它的值就变为实数(显示小数点)而不是整数。我认为这是因为 nHi 的滑块无法判断它的第一个范围参数 Dynamic [nLo] 实际上是一个整数,所以它默认为实数值。关于如何强制 nHi 保持整数值的任何建议? (Linux Mathematica v8.0.1)
答案 0 :(得分:6)
或者你可以做类似
的事情nLo = 1; nHi = 100;
Column[{Labeled[
Slider[Dynamic[nLo], {1, Dynamic[nHi], 1},
Appearance -> "Labeled"], "nLo", Left],
Labeled[Slider[
Dynamic[nHi, (nHi = Round[#]) &], {Dynamic[nLo], 100, 1},
Appearance -> "Labeled"], "nHi", Left],
{Dynamic[nLo], Dynamic[nHi]}}]
答案 1 :(得分:3)
要么我无法理解解决方案的要求,要么此代码只能在 Mathematica 7中正常运行。
有趣的问题。这似乎有效:
nLo = 1; nHi = 100;
Column[{Labeled[
Slider[Dynamic[nLo], {1, Dynamic[nHi], 1},
Appearance -> "Labeled"], "nLo", Left],
Labeled[Slider[
Dynamic[nHi], {Dynamic[Unevaluated@Round@nLo], 100, 1},
Appearance -> "Labeled"], "nHi", Left],
Dynamic[{nLo, nHi}]}]