2013-01-18 180 views
0

正如這個問題已經問過或多或少:https://stackoverflow.com/questions/14397729/working-with-multiple-guis-in-matlab等待GUI完成

我想有輸出parameers,等待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

你必須做的

[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 

Now函數基本上返回句柄結構的子集,含有根據結構1個或3字段句柄

+0

輸出必須是單元'output {1} .output',否則這解決了我的問題。 –