How to use uiwait in GUI

8 views (last 30 days)
Myrthe B.
Myrthe B. on 5 Feb 2019
Answered: Luna on 5 Feb 2019
I want to use uiwait in my gui to prevent the rest of my script from advancing until the button 'end' is used. However, when I put uiwait in the opening function, it advances anyways. However, it only advances after using two buttons (initializing imfreehand) twice. If I put one more uiwait, the same happens after three times. Two other buttons don't have this effect on advancing the script. Therefore, it seem that these two buttons somehow delete the figure so uiwait advances. However, I can't figure out where, how and why.
Where should I put uiwait to have the desired effect (advancing only after the button 'end' is used)?
  2 Comments
Gani
Gani on 5 Feb 2019
You can disable the 'end' button till your script completes using callback.
Myrthe B.
Myrthe B. on 5 Feb 2019
Yes, I'm aware of that. Maybe it was not entirely clear. I have a base script where this GUI is a part of. I only want to advance with the rest of the script until the user is ready with manual adjusting and pushes 'end'. At the moment, the rest of my script advances before this manual adjusting is complete.

Sign in to comment.

Accepted Answer

Luna
Luna on 5 Feb 2019
Use waitfor instead. Waitfor pauses calculation until the object destroyed or deleted.
figHandle = uifigure(..) % or you can create another object, etc.
waitfor(figHandle); % when end button pressed, put delete to this button's callback and delete figHandle (or close figure inside this callback), so your code will continue after deletion.
% you can apply it any other objects not only figures

More Answers (0)

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!