Skip to main content
Enhancements in code of MWE
Source Link
Vicent
  • 1.1k
  • 6
  • 16

I played around with the code and I finally found a way to do what I wanted. In the meanwhile, I think I've also better understood the behaviour of Manipulate.

This is my solution; it deals with the second MWE I posted:

Manipulate[ 

 (* === Calculations that are triggered each time there is a change 
        in tracked symbols ('parameters'—'parameters', in this case): === *) 

 message = "Updating..."; result = "";
 Pause[2];
 result = parameters[[1]] + parameters[[2]];
 message = "Ready"; 

 (* === Results to be shown: === *) 

 Column[{Dynamic[message], Dynamic[result]}], 

 (* === Controls: === *) 

 {{a, 5}, 0, 10, 1, Appearance -> {"Labeled"}, 
  AppearanceElements -> None}, 
 {{b, 5}, 0, 10, 1, 
  Appearance -> {"Labeled"}, AppearanceElements -> None}, 
 Button["Calculate", parameters = {a, b}], 

 (* === Other settings: === *) 

 TrackedSymbols :> {parameters},
 Initialization -> (
   Clear[a, b, parameters, message, result];
   parameters = {5, 5}; result = 10; message = "Ready"
   )]

This is the result:

enter image description here

I played around with the code and I finally found a way to do what I wanted. In the meanwhile, I think I've also better understood the behaviour of Manipulate.

This is my solution; it deals with the second MWE I posted:

Manipulate[
 (* === Calculations that are triggered each time there is a change 
in tracked symbols ('parameters', in this case): === *)
 message = "Updating..."; result = "";
 Pause[2];
 result = parameters[[1]] + parameters[[2]];
 message = "Ready";
 (* === Results to be shown: === *)
 Column[{Dynamic[message], Dynamic[result]}],
 (* === Controls: === *)
 {{a, 5}, 0, 10, 1, Appearance -> {"Labeled"}, 
  AppearanceElements -> None}, {{b, 5}, 0, 10, 1, 
  Appearance -> {"Labeled"}, AppearanceElements -> None}, 
 Button["Calculate", parameters = {a, b}],
 (* === Other settings: === *)
 TrackedSymbols :> {parameters},
 Initialization -> (
   Clear[a, b, parameters, message, result];
   parameters = {5, 5}; result = 10; message = "Ready"
   )]

This is the result:

enter image description here

I played around with the code and I finally found a way to do what I wanted. In the meanwhile, I think I've also better understood the behaviour of Manipulate.

This is my solution; it deals with the second MWE I posted:

Manipulate[ 

 (* === Calculations that are triggered each time there is a change
        in tracked symbols —'parameters', in this case: === *) 

 message = "Updating..."; result = "";
 Pause[2];
 result = parameters[[1]] + parameters[[2]];
 message = "Ready"; 

 (* === Results to be shown: === *) 

 Column[{Dynamic[message], Dynamic[result]}], 

 (* === Controls: === *) 

 {{a, 5}, 0, 10, 1, Appearance -> {"Labeled"}, AppearanceElements -> None}, 
 {{b, 5}, 0, 10, 1, Appearance -> {"Labeled"}, AppearanceElements -> None}, 
 Button["Calculate", parameters = {a, b}], 

 (* === Other settings: === *) 

 TrackedSymbols :> {parameters},
 Initialization -> (
   Clear[a, b, parameters, message, result];
   parameters = {5, 5}; result = 10; message = "Ready"
   )]

This is the result:

enter image description here

Source Link
Vicent
  • 1.1k
  • 6
  • 16

I played around with the code and I finally found a way to do what I wanted. In the meanwhile, I think I've also better understood the behaviour of Manipulate.

This is my solution; it deals with the second MWE I posted:

Manipulate[
 (* === Calculations that are triggered each time there is a change 
in tracked symbols ('parameters', in this case): === *)
 message = "Updating..."; result = "";
 Pause[2];
 result = parameters[[1]] + parameters[[2]];
 message = "Ready";
 (* === Results to be shown: === *)
 Column[{Dynamic[message], Dynamic[result]}],
 (* === Controls: === *)
 {{a, 5}, 0, 10, 1, Appearance -> {"Labeled"}, 
  AppearanceElements -> None}, {{b, 5}, 0, 10, 1, 
  Appearance -> {"Labeled"}, AppearanceElements -> None}, 
 Button["Calculate", parameters = {a, b}],
 (* === Other settings: === *)
 TrackedSymbols :> {parameters},
 Initialization -> (
   Clear[a, b, parameters, message, result];
   parameters = {5, 5}; result = 10; message = "Ready"
   )]

This is the result:

enter image description here