MATLAB Answers

How to show that calculation is going in MATLAB App

4 views (last 30 days)
Dhananjay Singh
Dhananjay Singh on 12 Oct 2021
Answered: dpb on 12 Oct 2021
A rough app I have recreated.When the user clicks "Calculate", I want to show that calculations are happening like a progress bar or "Calculate" Button changes to "Calculating" and after calculations are done revert back to "Calculate".
Code for app is:
a = app.Number1EditField.Value;
b = app.Number2EditField.Value;
x = 10*rand(1,1);
eqn = 12- (a+b+x);
while eqn ~= 0
x = x + 0.0001;
end
app.AnswerEditField.Value = x;
% P.S I know here the answer won't come.

Accepted Answer

Kevin Holly
Kevin Holly on 12 Oct 2021
Edited: Kevin Holly on 12 Oct 2021
You can create a status text in the App Designer by dragging "Label" onto your app in Design View. You can edit the font, alignment, and background color to fit your needs. You can uncheck the Visible check box. When calculation are being performed, you can add this to the callback that triggers the calculation:
set(app.Label, 'Visible', 'on'); drawnow;
Once it is done, you can add:
set(app.Label, 'Visible', 'off'); drawnow;
Note, you can rename your components by double clicking its name in the Component Browser. So you can change the name from app.Label to app.statusText, if you so desire.

More Answers (2)


dpb
dpb on 12 Oct 2021
An outline of the progress dialog implementation I used for one app...
% Button pushed function: UpdateButton
function UpdateButtonPushed(app, event)
% disable the pushbutton so can't queue more events; change text to show we're busy
app.UpdateButton.Enable='off'; app.UpdateButton.Text="Working"; app.UpdateButton.FontColor='r';
app.QuitButton.Enable='off';
drawnow nocallbacks % have to refresh screen to be sure updates a shown immediately
%...a whole bunch of error-checking code in here elided for brevity...
% insert a progress dialog for grins...
h=uiprogressdlg(app.RestrictedFundsAwardsWorkbookUpdateToolUIFigure, ...
"Title",'Please Standby...',"Message",'Reading Billing',"Indeterminate","on");
% the actual call to the function that does all the work...
[tBill,tPay]=readBilling(app.billQualFile,app.billSheet,app.billUpdate);
% the first phase is completed; change the progress message to reflect
h.Message='Writing Awards';
writeAwards(tBill,tPay,app.year,app.semester,app.awardQualFile,app.awardSheet);
% all done; change the progress message to reflect; pause long enough
% user can read message (if they're looking :)
h.Message='Update Complete';
pause(0.5)
close(h)
% now reenable the buttons and replace original label...
app.UpdateButton.Text="Update"; app.UpdateButton.FontColor='k'; app.UpdateButton.Enable='on';
app.QuitButton.Enable='on';
drawnow
end
Above seems to work like a champ...

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!