How to use uiwait in GUI

8 次查看(过去 30 天)
Myrthe B.
Myrthe B. 2019-2-5
回答: Luna 2019-2-5
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 个评论
Gani
Gani 2019-2-5
You can disable the 'end' button till your script completes using callback.
Myrthe B.
Myrthe B. 2019-2-5
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.

请先登录,再进行评论。

采纳的回答

Luna
Luna 2019-2-5
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by