Dynamic Mathematica ItemSize禁用SetterBar

Dynamic Mathematica ItemSize禁用SetterBar,dynamic,formatting,wolfram-mathematica,spacing,Dynamic,Formatting,Wolfram Mathematica,Spacing,我正在使用Mathematica,并且对Multicolumn的ItemSize功能有问题。在下面的代码中,我根据第一个面板中的SetterBar值在第二个面板中生成一定数量的SetterBars。这些以编程方式生成的SetterBars使用值0、1和2更新列表。对于面板1的值2和4,有足够的空间。但是,面板1的值8和16将SetterBars从屏幕上推出。我尝试在Spacings->0之后使用ItemSize->{5,1}将SetterBar压缩在一起。手动设置ItemSize功能时,只有第一

我正在使用Mathematica,并且对
Multicolumn
ItemSize
功能有问题。在下面的代码中,我根据第一个面板中的
SetterBar
值在第二个面板中生成一定数量的
SetterBar
s。这些以编程方式生成的
SetterBar
s使用值0、1和2更新列表。对于面板1的值2和4,有足够的空间。但是,面板1的值8和16将
SetterBar
s从屏幕上推出。我尝试在
Spacings->0
之后使用
ItemSize->{5,1}
SetterBar
压缩在一起。手动设置
ItemSize
功能时,只有第一个
SetterBar
允许我单击并更改其值。所有其他
SetterBar
s似乎都已“禁用”

有谁能告诉我如何“压缩”一长串的16个
SetterBar
s,使它们都适合一行,而不需要水平滚动

DynamicModule[{ number = 2, list = {0, 0} }, Panel[Column[{
Panel[
 SetterBar[
  Dynamic[number, {(number = #), (list = 
       PadRight[{}, number])} &], {2, 4, 8, 16} ]],
Dynamic[
 Panel[Multicolumn[
   Table[With[{i = i}, 
     Multicolumn[{SetterBar[Dynamic[list[[i]]], {0, 1, 2}], 
       Style[i, 12]}, {2, number}, Alignment -> Center, 
      ItemSize -> {4, 1}]], {i, number}], number, Spacings -> 0]]],
Dynamic[list]}]]]

您必须将内部
多列
s的列数固定为1,并且不应随
数的增加而增加

DynamicModule[{number = 2, list = {0, 0}}, 
 Panel[Column[{Panel[
     SetterBar[
      Dynamic[number, {(number = #), (list = PadRight[{}, number])} &], {2, 4, 8, 16}]], 
    Dynamic[Panel[
      Multicolumn[
       Table[With[{i = i}, 
         Multicolumn[{SetterBar[Dynamic[list[[i]]], {0, 1, 2}], 
           Style[i, 12]}, {2, 1}, Alignment -> Center, 
          ItemSize -> {4, 1}]], {i, number}], number, 
       Spacings -> 0]]], Dynamic[list]}]]]

两者都产生

您还可以使用
而不是
多列

DynamicModule[{number = 2, list = {0, 0}}, 
 Panel[Column[{Panel[
     SetterBar[
      Dynamic[number, {(number = #), (list = PadRight[{}, number])} &], {2, 4, 8, 16}]], 
    Dynamic[Panel[
      Row[Table[
        With[{i = i}, 
         Column[{SetterBar[Dynamic[list[[i]]], {0, 1, 2}], 
           Style[i, 12]}, {2, number}, Alignment -> Center, 
          ItemSize -> {4, 1}]], {i, number}]]]], Dynamic[list]}]]]

您必须将内部
多列的列数固定为1,并且不应随
数的增加而增加

DynamicModule[{number = 2, list = {0, 0}}, 
 Panel[Column[{Panel[
     SetterBar[
      Dynamic[number, {(number = #), (list = PadRight[{}, number])} &], {2, 4, 8, 16}]], 
    Dynamic[Panel[
      Multicolumn[
       Table[With[{i = i}, 
         Multicolumn[{SetterBar[Dynamic[list[[i]]], {0, 1, 2}], 
           Style[i, 12]}, {2, 1}, Alignment -> Center, 
          ItemSize -> {4, 1}]], {i, number}], number, 
       Spacings -> 0]]], Dynamic[list]}]]]

两者都产生

您还可以使用
而不是
多列

DynamicModule[{number = 2, list = {0, 0}}, 
 Panel[Column[{Panel[
     SetterBar[
      Dynamic[number, {(number = #), (list = PadRight[{}, number])} &], {2, 4, 8, 16}]], 
    Dynamic[Panel[
      Row[Table[
        With[{i = i}, 
         Column[{SetterBar[Dynamic[list[[i]]], {0, 1, 2}], 
           Style[i, 12]}, {2, number}, Alignment -> Center, 
          ItemSize -> {4, 1}]], {i, number}]]]], Dynamic[list]}]]]

建议您在mathematica.stackexchange.com上提问。建议您在mathematica.stackexchange.comPerfect上提问!非常感谢你!完美的非常感谢你!