Mathematica ItemSize 禁用 SetterBar
Mathematica ItemSize Disables SetterBar
我正在使用 Mathematica,Multicolumn
的 ItemSize
功能有问题。在下面的代码中,我根据第一个面板中的 SetterBar
值在第二个面板中生成一定数量的 SetterBar
。这些以编程方式生成的 SetterBar
s 使用值 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]}]]]
两者都产生
您也可以使用 Row
和 Column
代替 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]}]]]
我正在使用 Mathematica,Multicolumn
的 ItemSize
功能有问题。在下面的代码中,我根据第一个面板中的 SetterBar
值在第二个面板中生成一定数量的 SetterBar
。这些以编程方式生成的 SetterBar
s 使用值 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]}]]]
两者都产生
您也可以使用 Row
和 Column
代替 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]}]]]