# Make a button that evaluates a function over and over

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.

-

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]]

-
That works -- thanks. – SixWingedSeraph May 2 '12 at 14:11

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

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


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

-