Dynamic not displaying the current value
- To: mathgroup at smc.vnet.net
- Subject: [mg110040] Dynamic not displaying the current value
- From: Fred Simons <f.h.simons at tue.nl>
- Date: Sun, 30 May 2010 23:44:20 -0400 (EDT)
Rarely, Dynamic does not display the current value. This is the simplest example I know: n=0; Dynamic[n] Do[Pause[0.2],{n,1,5}] Recently, I found another example. It has to do a lot with DynamicModule and the option InheritScope, and I highly appreciate the contributions of John Fultz in this group. Without his explanations and references I think I would have been unable to construct this almost working example. CreateDocument[ DynamicModule[{a=0.5}, Button["Start", CreateDocument[{DynamicModule[{},Column[{Slider[Dynamic[a]], Dynamic[a]}], InheritScope->True], DynamicModule[{b},Button["Secondary screen",b=a;CreateDocument[{Slider[Dynamic[b]], Dynamic[b]}, WindowTitle->"secondary screen", NotebookEventActions->{"WindowClose":>(a=b)}]], InheritScope->True], DynamicModule[{},Button["Print a",Print[a]], InheritScope->True]}, Saveable->False, WindowTitle->"main screen", WindowSize->Scaled[1.0]]] ], WindowTitle->"start screen"]; In this example, there is a main screen, in which I can manipulate the variable a. There is a secondary screen, in which I also want to manipulate the variable a, but in such a way that there is no effect in the main screen. This is done by using a local variable b, initially set to a, that can be manipulated in the secondary screen, and on closing the secondary screen, the variable a is set to b. This almost works. Evaluate the command, press Start, use the slider, press Secondary screen, use the slider for manipulating b and close the secondary screen. Everything works fine, apart from the fact that the slider and Dynamic[a] in the main screen now do not display the latest value for b. Nevertheless, thecurrent value of a IS the latest value of b, as can be seen by pressing 'Print a'. So it is only the display in the main screen that is incorrect. There is a trivial workaround for these problems: simply add the option UpdateInterval->0.5 to the Dynamic commands in the main screen. But that is very unelegant and my feeling is that, in particular in the second example, there must be a better way. Any comment is welcome. Fred Simons Eindhoven University of Technology