如何在动态链接的滑块中维护整数值?

ren*_*ize 6 wolfram-mathematica

我想使用一对滑块为两个变量nLonHi设置整数值,每个变量的范围可以从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}]
 }
]
Run Code Online (Sandbox Code Playgroud)

问题是,只要我调整nHi,它的值就变为实数(显示小数点)而不是整数.我认为这是因为nHi的滑块无法判断它的第一个范围参数Dynamic [nLo]实际上是一个整数,所以它默认为实数值.关于如何强制nHi保持整数值的任何建议?(Linux Mathematica v8.0.1)

Hei*_*ike 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]}}]
Run Code Online (Sandbox Code Playgroud)

  • +1很高兴知道,动态教程中http://reference.wolfram.com/mathematica/tutorial/IntroductionToDynamic.html的动态教程中对“ Dynamic”第二个参数的这种用法已在“第二个参数”部分中进行了说明。动态”。 (2认同)

Mr.*_*ard 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}]}]
Run Code Online (Sandbox Code Playgroud)