等gui完成

时间:2013-01-18 14:40:23

标签: matlab user-interface

正如在这个问题中已经或多或少地提到的那样:https://stackoverflow.com/questions/14397729/working-with-multiple-guis-in-matlab

我想要输出参数并等待gui完成。

我现在使用waitfor,但输出始终只是一个句柄

handle = uiConfigureCalibration('uiMain', handles.figure1);
waitfor(handle);
display(handle);

uiConfigureCalibration的输出函数会传递几个参数:

function varargout = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
   varargout{2} = handles.files.calibration;
   varargout{3} = handles.calibration;
end 

是否有机会以某种方式在调用函数中获取这些参数?

1 个答案:

答案 0 :(得分:1)

你必须这样做

[output,FilesCalibration,Calibration] = uiConfigureCalibration('uiMain', handles.figure1);

获取额外的输出 - 你只需要在函数调用中输出一个输出,所以你总是得到一个输出。但是,如果输出单个参数,则会失败。

由于输出数量是可变的,我认为最好返回包含所有输出的结构:

function output = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles) 
output.output = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
   output.files.calibration = handles.files.calibration;
   output.calibration = handles.calibration;
end

现在函数本质上返回句柄结构的子集,包含1或3个字段,具体取决于句柄的结构