2007年4月25日星期三

MATLAB如何从GUI中返回参数

(本文为Liuxqsmile原创,转载请保留原文链接
在研学论坛上看到有人问这个问题,把方法在这里重新贴一下:
在GUI子程序的OpeningFcn函数的结尾加上uiwait(handles.figure1); figure1是子GUI的Tag;
子GUI中控制程序结束(如"OK”和"Cancel"按钮)的callback末尾加上uiresume(handles.figure1),不要将delete命令放在这些callback中;
在子GUI的OutputFcn中设置要传递出去的参数,如 varargout{1} = handles.par1;varargout{2} = handles.par2;末尾添加 delete(handles.figure1); 结束程序。

在GUI的OpenFcn中,如果不加uiwait, 程序会直接运行到下面,执行OutputFcn。也就是说程序一运行,返回值就确定了,再在其它部分对handles.output作更改也没有效果了。
加上uiwait后,只有执行了uiresume后,才会继续执行到OutputFcn,在此之前用户有充分的时间设置返回值。

在一个GUI中调用另一个GUI时,主GUI不需要特别的设置,同调用普通的函数一样。在打开子GUI界面的同时,主程序还可以响应其它的控件。不需要担心子GUI的返回值被传错了地方。

1 条评论:

匿名 说...

Very good explanation!

for more information, please refer to the example in the PDF book "Matlab 7 , Creating Graphic User Interfaces", page 9-17 to 9-23.

This PDF book can be downloaded from mathworks.com.