Mathematica ItemSize 禁用 SetterBar

Mathematica ItemSize Disables SetterBar

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

任何人都可以告诉我如何 "compress" 将 16 SetterBar 的长列表全部放在一行中而不需要水平滚动吗?

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]}]]]

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

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[
      Multicolumn[
       Table[With[{i = i}, 
         Multicolumn[{SetterBar[Dynamic[list[[i]]], {0, 1, 2}], 
           Style[i, 12]}, 1, Alignment -> Center, 
          ItemSize -> {4, 1}]], {i, number}], number, 
       Spacings -> 0]]], Dynamic[list]}]]]

两者都产生

您也可以使用 RowColumn 代替 Multicolumn

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]}]]]