1

Is there a way to make InputField[] compatible with RepeatingElement or a similar scheme of user interaction? The idea is to create an interface with many user defined variables, as many as the user sees fit to be exact.

Kuba
  • 136,707
  • 13
  • 279
  • 740
useranonis
  • 435
  • 2
  • 7
  • Why not just several InputFields? After all, how will you plan to segment (separate) individual variables during entry? – David G. Stork Feb 15 '18 at 23:41
  • @DavidG.Stork The question then would be how to enable the user to make the several InputField's appear and disappear from the GUI panel with the click of a button. – useranonis Feb 15 '18 at 23:52
  • Being able to add new input fields or buttons or any other elements is something that you can probably find among the Q&A here. You need a button to add the element, a button to remove it -- if you want that capability, and use of function such as Table and With. I think the advanced dynamics tutorial in the docs has examples as well. – Mike Honeychurch Feb 15 '18 at 23:58

1 Answers1

4

Here's something to start with:

multiInput // ClearAll
multiInput[Dynamic[list_], type_: Number, def_: 0, opts___] := 
 DynamicModule[{n = Length[list]},
  Column[{
    Button["+", AppendTo[list, def]; n++;],
    Dynamic[
     Grid[
      Table[{
          InputField[Dynamic[list[[#]]], type, opts],
          Button["-", n--; list = Delete[list, #]]
          } &@i, {i, n}]
      , Alignment -> {Left, Center}],
     TrackedSymbols :> {n}
     ]


    }, BaseStyle -> 
    ButtonBoxOptions -> {ImageSize -> All, FrameMargins -> 5, 
      ContentPadding -> False}]
  ]

l = {};
multiInput[Dynamic@l]
Dynamic@l

enter image description here

Kuba
  • 136,707
  • 13
  • 279
  • 740