MATLAB Answers

0

App Designer: Display text before executing

Asked by Matt Falcy on 6 May 2019
Latest activity Commented on by Matt Falcy on 7 May 2019
This is relatively simple: When a user pushes a button in App Designer, I want them to see a message saying that the operation is execuing because it takes a few minutes to complete. In the example below, the "Working..." message is not displayed prior executing the loop, thus the user only sees "Done" when the operation is over. I suspect that I need the function to display the "Working" text and then call the other, time consuming function, but it is not clear how I do this inside App Designer. Thanks.
function buttonpush(app,event)
app.myEditField.Value= 'Working...'
for i =1:100
x[i]=stuff
end
app.myEditField.Value = 'Done'
end

  0 Comments

Sign in to comment.

2 Answers

Answer by Kojiro Saito on 7 May 2019
 Accepted Answer

One way is to pause a bit (for exapmle, 0.01 second) in order to display the text before doing long-time operation.
function buttonpush(app,event)
app.myEditField.Value= 'Working...';
pause(0.01)
for i =1:100
x[i]=stuff
end
app.myEditField.Value = 'Done';
end
Or, you can use progress message dialog (uiprogressdlg).
function buttonpush(app,event)
d = uiprogressdlg(app.UIFigure,'Title','Progress', 'Indeterminate','on');
d.Message = 'Working...';
for i =1:100
x[i]=stuff
end
d.Message = 'Done';
close(d)
end

  0 Comments

Sign in to comment.


Answer by Jan
on 7 May 2019

This is a job for drawnow. Insert it after modifying the contents of the window to give Matlab the chance to update the display.

  1 Comment

I tried all three solutions and they all worked great. Thank you Kojiro and Jan!

Sign in to comment.