Re: can't get InputField to work inside a While command
- To: mathgroup at smc.vnet.net
- Subject: [mg130811] Re: can't get InputField to work inside a While command
- From: Dushan Mitrovich <dushanm at nnips.net>
- Date: Fri, 17 May 2013 04:36:26 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <kmso9j$h67$1@smc.vnet.net> <kmvbdl$nok$1@smc.vnet.net>
David Bailey wrote: > On 14/05/2013 08:14, Dushan Mitrovich wrote:> I need to be able to input > parameters for an a-priori indeterminate > > number of cases. The way I've been trying to do this is by using a > > While statement containing InputFields, one of which asks if there are > > to be more cases to deal with. If not, the previously True logical > > 'test' for While is reset to False. > > > > But apparently InputField is not even recognized as part of the 'body' > > inside a While. By itself InputField works as expected, but not in this > > reduced example: > > > > cntr = 0; > > While[cntr<3, cntr++; InputField[xx]] > > > > which only produces > > > > 1 > > 2 > > 3 > > > > What am I missing? Or am I going about this the wrong way? > > > > - Dushan > > [ reverse the middle word of address to reply ] > > > > You need to realise the InputField construction generates a box only > when it is output to a notebook (analogous to a Graphics object) - it > doesn't evaluate to anything other than itself. This code will create a > list of InputField objects, each attached to a different element of a > list, and the result will be returned to your notebook as a column of > boxes so you can change the various components and observe the result by > evaluating the variable data. > > nin=7; > data=ConstantArray[0,nin]; > Column[Table[With[{k=k},InputField[Dynamic[data[[k]]]]],{k,1,7}]] > > This may, or may not be what you really want. You may want to place the > InputField objects in a separate, pop-up notebook with a close button to > close the window before the program continues to execute. This is > possible using CreateDialog. > > David Bailey > http://www.dbaileyconsultancy.co.uk > > Okay, thanks for the clarification. It seems I can't use InputField the way I intended in a loop testing for a condition. Your example assumes I know beforehand the number of times I need to invoke it, which generally won't be the case. But apparently I can use Input within such a loop, and I'll explore that possibility further. - Dushan