2

I have problems making Button evaluate an input like this one:

Button["Load", Get["/Users/simonlausen/Desktop/Input/ex1.mx"]]

I have tried a bunch of things, but haven't found any elegant solution. What to do?

rm -rf
  • 88,781
  • 21
  • 293
  • 472
Simon
  • 493
  • 2
  • 6
  • 1
    Button has a time-out of 5 seconds. Add the options Method-> "Queued" to remove the time-out. (default is "Preemptive"). It's documented. – andre314 Apr 01 '13 at 22:36
  • Method -> "Queued" is almost always the answer to questions about buttons that don't work as expected when the button action requiers Mathematica to do something that takes some time. I have posted a list of some of the previous similar question here. This question might be considered a duplicate on any of these. – m_goldberg Apr 01 '13 at 23:09

2 Answers2

2

I think the answer is that the main link has to evaluate the Get call. Reusing Mr.Wizards test:

Export["testfile.m", "Print[2+2]; f[x_]:=Sin[x]", "String"]
Button["Load", Get["testfile.m"], Method -> "Queued"]

works for me. For an explanation what I mean with main link you could check the chat log. I don't know whether it is good practice to include links of this here.

http://chat.stackexchange.com/transcript/message/8608385#8608385

halirutan
  • 112,764
  • 7
  • 263
  • 474
  • Method -> "Queued" does not help with the example I gave. It may help when loading a package takes longer than the time-out, but I'm not sure if that is the problem the OP is having or if it is more akin to this. – Mr.Wizard Apr 01 '13 at 23:15
  • 1
    That chat discussion should be part of a canonical answer! Don't we have a question that requires explicitly this? – István Zachar Apr 02 '13 at 14:08
0

One can see that the Get operation does work, but simple output is suppressed:

Export["testfile.m", "Print[2+2]; Sin[1]", "String"]

Button["Load", << "testfile.m"]

When the button is clicked 4 is printed, but Sin[1] is not.

This is the same as: Button["Go", Sin[1]] which also does not print when the button is clicked.

If Get is used directly:

<< "testfile.m"

4

Sin[1]

At the moment I cannot recall how to get the plain output printed to the evaluation Notebook.

EDIT: It appears there is no simple way:

Can Button[] generate output without using Print[]?

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371