我正在使用 Mathematica 并且ItemSize
的{{1}}功能存在问题。在下面的代码中,我在第二个面板中根据第一个面板中的Multicolumn
值生成一定数量的SetterBar
s。这些以编程方式生成的SetterBar
更新值为0,1和2的列表。对于Panel 1值2和4,有足够的空间。但是,Panel 1值8和16将SetterBar
屏幕关闭。我尝试在SetterBar
之后使用ItemSize -> {5, 1}
来“压缩”Spacings -> 0
。手动设置SetterBar
功能时,只有第一个ItemSize
允许我点击并更改其值。所有其他SetterBar
似乎都被“禁用”了。
有人能告诉我如何将16 SetterBar
的长列表“压缩”到一行中,而不需要水平滚动吗?
SetterBar
答案 0 :(得分:0)
您必须将内部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]}]]]