Matlab 如何在执行带有输出的函数时阻止GUI?

Matlab 如何在执行带有输出的函数时阻止GUI?,matlab,function,user-interface,return,wait,Matlab,Function,User Interface,Return,Wait,我正在GUIDE中创建一个MATLAB应用程序,现在我面临一个问题。我需要调用一个需要很长时间才能执行并返回值的函数,但在执行该函数时,我希望GUI等待返回值 我尝试了waitfor,但这样我仍然可以与GUI交互,并且无法获取返回值 waitfor(function); 我可以想出一些禁用所有GUI的方法,然后再重新启用它,但我同时启用和禁用了对象 您知道这个问题的解决方案吗?一个简单的解决方案是在执行长时间运行的函数之前创建一个带有消息“请稍候…”的模式对话框,然后在对话框完成后关闭对话框。

我正在GUIDE中创建一个MATLAB应用程序,现在我面临一个问题。我需要调用一个需要很长时间才能执行并返回值的函数,但在执行该函数时,我希望GUI等待返回值

我尝试了waitfor,但这样我仍然可以与GUI交互,并且无法获取返回值

waitfor(function);
我可以想出一些禁用所有GUI的方法,然后再重新启用它,但我同时启用和禁用了对象


您知道这个问题的解决方案吗?

一个简单的解决方案是在执行长时间运行的函数之前创建一个带有消息“请稍候…”的模式对话框,然后在对话框完成后关闭对话框。模式对话框将位于GUI前面,不允许与后面的窗口交互


用户可以单击对话框上的“关闭”按钮,但您可以通过设置对话框的“CloseRequestFcn”属性来覆盖该按钮,以便关闭按钮不起任何作用(不幸的是,您无法轻松隐藏按钮)。

我喜欢Sam Roberts提出的模式对话框。它没有神秘感,而且用户友好

另一个肮脏而简单的解决方案可能是完全隐藏GUI,如果可以的话:

set(hFig, 'Visible', 'off');

完成后,将其设置为“开”。最好确保在catch块中将图形设置为“on”,以避免在执行过程中由于错误而导致GUI消失。

将图形设置为“off”如何?我刚刚测试了它。快速和肮脏的解决方案。起初,我想限制玩家进行交互,但在这种情况下,让它消失要好得多。谢谢你,向瑞丽。将其作为响应,以便我可以标记它。