2016-05-15 23 views
1

Ich verwende Mathematica und habe ein Problem mit der ItemSize Funktion von Multicolumn. In meinem Code unten erzeuge ich eine bestimmte Anzahl von SetterBar s im zweiten Panel basierend auf dem SetterBar Wert im ersten Panel. Diese programmgesteuert generierten SetterBar s aktualisieren eine Liste mit den Werten 0, 1 und 2. Für Panel 1 Werte 2 und 4 gibt es viel Platz. Die Werte 8 und 16 von Panel 1 drücken jedoch die Taste SetterBar off. Ich versuchte, ItemSize -> {5, 1} nach Spacings -> 0 zu verwenden, um die SetterBar s zusammen zu "komprimieren". Bei der manuellen Einstellung der Funktion ItemSize kann nur der erste Wert SetterBar auf klicken und den Wert ändern. Alle anderen SetterBar s scheinen "deaktiviert" zu sein.Mathematica ItemSize deaktiviert SetterBar

Kann mir jemand zeigen, wie man die lange Liste von 16 SetterBar s zu "compress", um alle in einer einzigen Zeile passen, ohne horizontal scrollen zu müssen?

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

vorschlagen, dass Sie auf mathematica.stackexchange.com fragen – agentp

Antwort

0

Sie haben die Anzahl der Spalten der inneren Multicolumn s bis 1 fixieren und es sollte nicht mit number erhöhen.

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

Oder

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

Beide produzieren Out1

Sie auch und Column statt Multicolumn nutzen könnten.

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

Out2

+0

Perfect! Ich danke dir sehr! –