2013-01-18 61 views
2

我想根據這個example code使用uiwait在guis之間共享數據。 但是,如果我撥打uiwait(handles.figure1);,句柄結構在uitest_OutputFcn處爲空。處理結構空與matlab中的uiwait gui在輸出功能

function varargout = uitest(varargin) 

% Begin initialization code - DO NOT EDIT 
gui_Singleton = 1; 
gui_State = struct('gui_Name',  mfilename, ... 
        'gui_Singleton', gui_Singleton, ... 
        'gui_OpeningFcn', @uitest_OpeningFcn, ... 
        'gui_OutputFcn', @uitest_OutputFcn, ... 
        'gui_LayoutFcn', [] , ... 
        'gui_Callback', []); 
if nargin && ischar(varargin{1}) 
    gui_State.gui_Callback = str2func(varargin{1}); 
end 

if nargout 
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); 
else 
    gui_mainfcn(gui_State, varargin{:}); 
end 
% End initialization code - DO NOT EDIT 


% --- Executes just before uitest is made visible. 
function uitest_OpeningFcn(hObject, eventdata, handles, varargin) 

% Choose default command line output for uitest 
handles.output = hObject; 

% Update handles structure 
guidata(hObject, handles); 

% UIWAIT makes uitest wait for user response (see UIRESUME) 
% --> enable to generate error 
% uiwait(handles.figure1); 


% --- Outputs from this function are returned to the command line. 
function varargout = uitest_OutputFcn(hObject, eventdata, handles) 
% varargout cell array for returning output args (see VARARGOUT); 
% hObject handle to figure 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

% Get default command line output from handles structure 
varargout{1} = handles.output; 

% -------------------------------------------------------------------- 
function menuClose_Callback(hObject, eventdata, handles) 
% hObject handle to menuClose (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

uiresume(handles.figure1); 

close(handles.figure1); 

回答

1

這個數字不能在關閉功能被刪除:此答案

% --- Outputs from this function are returned to the command line. 
function varargout = uitest_OutputFcn(hObject, eventdata, handles) 
% varargout cell array for returning output args (see VARARGOUT); 
% hObject handle to figure 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

% Get default command line output from handles structure 
varargout{1} = handles.output; 

% The figure can be deleted now 
delete(handles.figure1); 

% -------------------------------------------------------------------- 
function menuClose_Callback(hObject, eventdata, handles) 
% hObject handle to menuClose (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

close(handles.figure1); 

% --- Executes when user attempts to close figure1. 
function figure1_CloseRequestFcn(hObject, eventdata, handles) 
% hObject handle to figure1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

% Hint: delete(hObject) closes the figure 
if isequal(get(hObject, 'waitstatus'), 'waiting') 
    % The GUI is still in UIWAIT, us UIRESUME 
    uiresume(hObject); 
else 
    % The GUI is no longer waiting, just close it 
    delete(hObject); 
end 
+0

謝謝,我有一個很難找到的這個問題的答案。使用「close(handles.figure1);」在按鈕回調函數中也爲我解決了它。 – Leo