How to update uiprogressdlg inside a separate .m function?

12 次查看(过去 30 天)
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 个评论
Benjamin Thompson
Benjamin Thompson 2022-2-15
There are always global variables but you probably want something more elegant than that. Can you post some sample code

请先登录,再进行评论。

回答(1 个)

Nivedita
Nivedita 2023-12-4
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.

类别

Help CenterFile Exchange 中查找有关 Specifying Target for Graphics Output 的更多信息

标签

产品


版本

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by