How to update uiprogressdlg inside a separate .m function?

3 views (last 30 days)
I have a function called Main(x,y,z,etc.) that contains all of the calculations for my program and needs to be a separate .m file because it is called directly by multiple services. One of the services that calls the function is a UI that I built in App Designer in which I use the uiprogressdlg() command to display an 'indeterminant' progress bar to tell the user that the program is working. Recently I've made changes to the code that can extend the runtime to a couple of minutes in some cases, so I'd like to allow the progress bar to actually show the current progress so that users know that it's not locked up. Is there a way to update uiprogressdlg() within Main() to achieve this?
  1 Comment
Benjamin Thompson
Benjamin Thompson on 15 Feb 2022
There are always global variables but you probably want something more elegant than that. Can you post some sample code

Sign in to comment.

Answers (1)

Nivedita
Nivedita on 4 Dec 2023
Hello Levi,
You can update the "uiprogressdlg" from within your "Main" function to show the progress of your calculations. To achieve this, you can use the "Dialog" object returned by the "uiprogressdlg" function and update its properties to reflect the progress.
Here's an example of how you can achieve this:
function Main(x, y, z, etc.)
% Initialize progress dialog
dlg = uiprogressdlg('Title', 'Calculating', 'Indeterminate', 'on');
% Perform your calculations
for i = 1:totalIterations % Replace totalIterations with the actual number of iterations
% Your calculation code here
% Update progress dialog
dlg.Value = i / totalIterations; % Update the progress value
drawnow; % Force the graphics to update
end
% Close progress dialog
close(dlg);
end
  • Within the calculation loop, the "Value" property of the "dlg' object is updated to reflect the progress of the calculations.
  • The "drawnow" function is called to force the graphics to update and show the progress in the dialog.
  • After the calculations are completed, the "close" function is used to close the progress dialog.
By updating the "Value" property of the "uiprogressdlg" object within your "Main" function, you can show the progress of the calculations to the user, allowing them to know that the program is still working.
For more information on the "uiprogressdlg" and "drawnow" functions, please refer to the following documentation links:
I hope it helps!
Regards,
Nivedita.

Categories

Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!