Using uialert with uiwait and uiresume
26 次查看(过去 30 天)
显示 更早的评论
Hi all, I have a GUI where asks the user to save a file. I check the filename and depending on the result either carry on or ask the user to change it. All of this is contained within a while loop so that it will continually loop around until the checks have passed or the user has cancelled.
Within this loop I have the alert that pops up stating the error
uialert(app.mainGuiUIFigure,{'New file name must not be the same as the default name, choose another'},'File name error','Icon','warning');
I want this to block execution of the code until the user presses ok. So I have tried using uiwait
uialert(app.mainGuiUIFigure,{'New file name must not be the same as the default name, choose another'},'File name error','Icon','warning','CloseFcn','uiresume');
uiwait
but it creates a blank figure window first. It will stop execution and will only resume once I close the alert window, but this new figure has popped up. How do I prevent this figure window from popping up? Is there a better way to do what I want?
I have successfully used waitfor(warndlg(...)); before, but as this is in appdesigner, I thought I'd use the new dialogue boxes to match the newer GUI graphics stlye.
Matlab 2017b, Windows 7-64bit
0 个评论
采纳的回答
Alexander Kornegay
2019-7-26
Try this instead:
uialert(app.mainGuiUIFigure,{'New file name must not be the same as the default name, choose another'},'File name error','Icon','warning','CloseFcn','uiresume(gcbf)');
uiwait(gcbf)
This will use the current figure instead of creating a new one in the process.
5 个评论
Adam Gogacz
2020-10-3
编辑:Adam Gogacz
2020-10-3
Actually, "uiconfirm" with the "Option" set to "OK" will do. Make sure you are assigning the call to "uiconfirm" to a dummy variable to pause the execution.
David Young
2021-3-1
Thank you Adam Gogacz, both for the analysis and the suggestion to use uiconfirm. But what a shame that uialert doesn't return an object to wait for - that greatly limits the situations where it's useful.
更多回答(3 个)
lihiniya
2022-1-21
You can use uiconfirm instead of uialert.
answr=uiconfirm(app.AiDAAnalysisV201alphaUIFigure,...
"New file name must not be the same as the default name, Choose another",...
"Warning",'Options',"OK",'Icon','warning');
You don't need to do anything with returned selection, because there's one possible option "OK".
1 个评论
Nick
2025-10-4,20:12
important, however, that there is an assignment to something ('answr' in the example ablve). If you keep it as simple as
uiconfirm(app.AiDAAnalysisV201alphaUIFigure,...
"New file name must not be the same as the default name, Choose another",...
"Warning",'Options',"OK",'Icon','warning');
the application continues, without pause on the opening of the confirmation dialog
Ron Fredericks
2022-4-26
编辑:Ron Fredericks
2022-4-26
I thank that Vas almost had the correct answer with:
uialert(app.mainGuiUIFigure,{'New file name must not be the same as the default name, choose another'},'File name error','Icon','warning','CloseFcn','uiresume');
Try this instead, it works for me when I need to wait for a response then close out the window (Note the @ sign). Also no uiwait required:
uialert(app.mainGuiUIFigure,{'New file name must not be the same as the default name, choose another'},'File name error','Icon','warning','CloseFcn',@(h,e) close(app.mainGuiUIFigure));
More details here:
https://www.mathworks.com/matlabcentral/answers/503729-how-to-close-the-figure-contain-the-uifigure-after-the-alert-is-closed#answer_413884
0 个评论
Marco Avalos
2024-3-8
编辑:Marco Avalos
2024-3-8
I use a line creating a variable which is the uifigure that I am using for the app, and then use UIconfirm and that did the job. these are the lines I used
fig = app.figure1; % In app designer this is the main UIfigure for your GUI
uiconfirm(fig,'Please select one option','Selection error');
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Maintain or Transition figure-Based Apps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!