11

I would like to have a command "RedoButton" which would make a button (or whatever control is suitable) that when clicked would print the value of a certain function over and over in the same place. So for example RedoButton["do it", RandomInteger[{1, 10}] would produce a button that, when clicked, would produce a random integer of the sort required, clicking it again would produce a possibly different random integer where the old one was, and so on. I have tried Toggle, Button, and numerous other commands but can't make any of them work correctly.

Verbeia
  • 34,233
  • 9
  • 109
  • 224
SixWingedSeraph
  • 627
  • 3
  • 10

2 Answers2

17

Maybe you could do something like this

SetAttributes[redoButton, HoldRest]
redoButton[str_, fun_] := DynamicModule[{result = Null}, 
   Column[{Button[str, result = fun], Dynamic[result]}]]

redoButton["press", RandomInteger[20]]
Heike
  • 35,858
  • 3
  • 108
  • 157
8

If you want to use the button itself to show the current value, this may help:

Button[Dynamic[x], x = RandomInteger[{1, 20}]]

Mathematica graphics

You can then use x or Dynamic[x] etc. for further computation/display.

Yves Klett
  • 15,383
  • 5
  • 57
  • 124