2017-08-16 33 views
1

我正在GUIDE中创建一个MATLAB应用程序,现在我正面临一个问题。我需要调用一个需要很长时间来执行并返回一个值的函数,但是在执行函数时,我希望GUI等待返回的值。如何在带输出的函数执行时阻止GUI?

试图WAITFOR但这样一来我还可以与GUI交互,我不能把返回值...

waitfor(function); 

我能想到的东西,禁用所有的GUI然后启用它,但我同时启用和禁用对象...

你知道这个问题的任何解决方案吗?

+0

如何设置图形*可见*为'关闭'? –

+0

我刚测试过它。快速肮脏的解决方案最初,我想限制玩家互动,但在这种情况下让玩家消失更好。谢谢@香瑞丽。把它作为回应,以便我可以举报。 – AceX

回答

2

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

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

0

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

另一个肮脏和简单的解决方案可能是完全隐藏的图形用户界面,如果是好的:

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

,并设置“上”完成后。确保在块中确保将其设置为'开'以避免由于执行期间出错而导致GUI消失。

相关问题