Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Dynamic GUI problems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg89406] Re: Dynamic GUI problems
  • From: Szabolcs <szhorvat at gmail.com>
  • Date: Mon, 9 Jun 2008 02:25:18 -0400 (EDT)
  • References: <g2dbji$9ks$1@smc.vnet.net>

On Jun 7, 9:58 am, zac <replicator... at gmail.com> wrote:
> Dear Group,
>
> building a GUI is highly non-intuitive for me, although I almost felt
> I understand the behaviour of dynamic interactivity.
>
> I. Problem - Master swich does not control semi-independent sub-
> switches
> This is the classic "set all/none switch" situation, with allowing the
> sub-switches to be set by the user individually. Switching the
> checkbox works, but hitting the buttons won't update checkboxes.
>
> master = False;
> def = {False, True};
>
> {Button["All", master = All], Button["None", master = None]}
> {Dynamic[master], Dynamic[sub1], Dynamic[sub2]}
> {sub1, sub2} =
>   Table[DynamicModule[{i = i},
>     Switch[master, All, True, None, False, _, def[[i]]]], {i, 2}];
> {Checkbox[Dynamic[sub1]], Checkbox[Dynamic[sub2]]}

There are many misunderstandings here.  First, you probably wanted to
make the Swicth dynamic (i.e. Dynamic@Switch instead of Switch), but
this still won't give the result that you expect.

It is important to understand that Dynamic is only about formatting.
Dynamic[x] will not evaluate to the value of x.  It will stay as
Dynamic[x], however it will be *displayed* as the value of x by the
FrontEnd in StandardForm (but not in InputForm: try seeing the
InputForm of these expressions to see what I mean).  The displayed
form of Dynamic[x] will be updated (and x will be re-evaluated)
whenever x changes value.  But it is important to note that this only
happens when this expression is actually visible on screen.  So you
cannot reply on side effects of x being evaluated inside a Dynamic
because the evaluation will only happen when it is really needed for
refreshing the display.  It is early in the morning here, I hope I
didn't mess up this explanation completely ...

So the solution is to set all directly in the button:

Button["All", sub1 = True; sub2 = True]
Button["None", sub1 = False; sub2 = False]

>
> II. Problem - Checkbox in label of TabView does not work
>
> TabView[{
>   Checkbox[Dynamic[x]] -> Dynamic[x],
>   "..." -> ""
>   }]

No idea about this one.  Just don't put the checkbox in the label ...

>
> Any ideas how to solve them?
>
> Istvan Zachar



  • Prev by Date: Re: A question about N[...]
  • Next by Date: Re: A question about N[...]
  • Previous by thread: Re: Dynamic GUI problems
  • Next by thread: Re: Dynamic GUI problems