如何在MATLAB的应用程序设计中使用'waitfor'或'uiwait'?

3

如何在MATLAB的应用程序设计器中使用waitforuiwait?这些函数只适用于图形界面(GUIDE),而不适用于应用程序设计器窗口。我该如何在应用程序设计器中实现相同的行为?我需要等待关闭第二个窗口后才能继续主窗口的代码。


你的前提不正确。waitforuiwait都适用于uifigure对象。 - sco1
@excaza。在主窗口的一个按钮中,我有 second_window; 这段代码会打开第二个窗口。之后使用了 waitfor(second_window, 'close'); 来等待第二个窗口关闭。但是第二个函数在运行后返回了错误:error using waitfor, invalid proporty - Eghbal
谢谢您的留言。没有使用close,但是如您在 waitfor 文档中所见,我们可以在 GUIDE 中使用 close 作为选项。因此,在 app designer 窗口中没有任何 close 属性吗? - Eghbal
1个回答

5
waitfor(second_window, 'close');实际上并不等待图形窗口关闭。给waitfor指定第二个输入参数告诉MATLAB阻塞执行,直到指定的属性发生变化或对象被删除。
如果输入足够的字符以匹配唯一名称*,MATLAB会自动补全属性名称。在您的情况下,'close'与该图形的CloseRequestFcn匹配。UI图形对象没有此属性,因此会出现错误。
调用waitfor而不带第二个输入可以实现所需的行为。

我不确定在MATLAB文档中是否明确说明了这一点,但其功能等效于MATLAB的inputParser类的PartialMatching属性:

接受参数名称的前导子字符串作为输入,并将值与该参数匹配。如果输入字符串有多个可能的匹配项,则MATLAB会抛出错误。


1
这个自动完成功能可能存在风险。 - Trilarion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接