Re: ProgressIndicator inside DynamicModule
- To: mathgroup at smc.vnet.net
- Subject: [mg109842] Re: ProgressIndicator inside DynamicModule
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Wed, 19 May 2010 20:13:46 -0400 (EDT)
Hi, but when it's just for showing progress of a calculation and not for dynamically changing input and displaying the result, why don't you use some simple construct like count == 1; input == RandomReal[{1, 50}, 5000]; ProgressIndicator[Dynamic[count], {1, Length[input]}] complexFunc[x_] :== Nest[BesselJ[0, #] &, x, 20]; Do[(count++; complexFunc[input[[i]]]), {i, 1, Length[input]}] What exactly is the reason to use a DynamicModule? The problem in the construct with the DynamicModule and the Do-Loop seems to be the reason that DynamicModule *needs* to display something which should be updated dynamically. John Fultz gave already some very exhaustive insights, how this works and what doesn't work. Maybe you want to read this here http://forums.wolfram.com/mathgroup/archive/2009/Feb/msg00424.html Cheers Patrick Am May 19, 2010 um 3:06 PM schrieb Istv=E1n Zachar: > Dear Patrick, > > Thanks for the help, but the problem is not solved. > First of all, I did not state the problem is in the > ProgressIndicator. I rather suggested that DynamicModule is the > cause of 'misfunctioning'. > Furthermore, your solution does not solve anything. My toy model > represented a more complex situation, where I have an iterative > function (a modified NDSolve, represented here with the Do loop), > for which I want to check on the progress via a similar construct as > StepMonitor. Thus you have thrown out the baby with the water by > just retaining pr++. > If I rewrite your version to mirror my issue, I end up with > something like this: > > DynamicModule[{pr == 0, range == {0, 100}, sw == False}, Grid@{{ > Button["Push me", sw == Not[sw]; pr == 0;], > Dynamic@ProgressIndicator[Dynamic@pr, range], > Dynamic@If[sw, Do[Pause[0.02]; pr == i, {i, range[[1]], > range[[2]]}]; pr], > Dynamic@Switch[sw, True, "Calculating...", False, "Finished."] > }}] > > which AGAIN won't produce the correct behaviour for ProgressIndicator. > > Any other idea? > > > > > On 2010.05.19. 14:04, Patrick Scheibe wrote: > > Hi, > > the problem is *not* the progress indicator but your button! > The button-function does not update dynamically the values. > What about: > > DynamicModule[{pr == 0, range == {0, 100}, sw == False}, Grid@{ > {Button["Push me", sw == Not[sw]], > Dynamic@ProgressIndicator[Dynamic@pr, range], > Dynamic@If[sw && pr < Last@range, Pause[0.02]; pr++, pr], > Dynamic@ > Switch[sw, True, "Calculating...", False, "Finished.", _, > "Standing by."]}}] > > Cheers > Patrick