Effacer les filtres
Effacer les filtres

How to update uiprogressdlg inside a separate .m function?

12 vues (au cours des 30 derniers jours)
Levi Blake
Levi Blake le 15 Fév 2022
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 commentaire
Benjamin Thompson
Benjamin Thompson le 15 Fév 2022
There are always global variables but you probably want something more elegant than that. Can you post some sample code

Connectez-vous pour commenter.

Réponses (1)

Nivedita
Nivedita le 4 Déc 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.

Catégories

En savoir plus sur Specifying Target for Graphics Output dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by