2014-10-31 43 views
0

我一直試圖從MATLAB的GUI中返回一些具有3個不同按鈕組的值,但是沒有返回任何值。如何從MATLAB GUI函數返回多個值

我也嘗試過使用全局變量,但是這也不起作用。

任何幫助,將不勝感激。

function mainUI(varargin) 

gui_Singleton = 1; 
gui_State = struct('gui_Name',  mfilename, ... 
        'gui_Singleton', gui_Singleton, ... 
        'gui_OpeningFcn', @mainUI_OpeningFcn, ... 
        'gui_OutputFcn', @mainUI_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 mainUI is made visible. 
function mainUI_OpeningFcn(hObject, eventdata, handles, varargin) 
handles.output = hObject; 

guidata(hObject, handles); 

uiwait(handles.gui); 

% --- Outputs from this function are returned to the command line. 
function varargout = mainUI_OutputFcn(hObject, eventdata, handles) 
    varargout{1} = handles.output; 

% --- Executes when selected object is changed in SensorLocPanel. 
function SensorLocPanel_SelectionChangeFcn(hObject, eventdata, handles) 
    switch hObject 
     ... 
    end 

% --- Executes when selected object is changed in StepTypeSel. 
function StepTypeSel_SelectionChangeFcn(hObject, eventdata, handles) 
    switch hObject 
     ... 
    end 

% --- Executes when selected object is changed in FileSelectPanel. 
function FileSelectPanel_SelectionChangeFcn(hObject, eventdata, handles) 
    switch hObject 
     ... 
    end 

    % --- Executes on button press in buttonRun. 
function buttonRun_Callback(hObject, eventdata, handles) 
    clc; 
    close all; 
%  delete(handles.gui) 
    return; % Quit the program 

% --- Executes during object creation, after setting all properties. 
function buttonChest_CreateFcn(hObject, eventdata, handles) 


% --- Executes during object deletion, before destroying properties. 
function buttonChest_DeleteFcn(hObject, eventdata, handles) 

% --- Executes when user attempts to close gui. 
function gui_CloseRequestFcn(hObject, eventdata, handles) 
    if isequal(get(hObject,'waitstatus'),'waiting') 
     uiresume(hObject); 
     guidata(hObject,handles); 
    else 
     % The GUI is no longer waiting, so destroy it now. 
     delete(hObject); 
    end 

回答

0

這是gui做的GUIDE嗎?在這種情況下,我建議在關閉時從gui返回以下video tutorial的值。如果你想在GUI運行的時候從GUI返回一些其他的工作空間(我不知道爲什麼,但是假設你有一個合理的理由),我認爲全局變量至少是一個好方法。但是請注意,您需要編寫行

global <gVars> 

在您想要使用全局變量的每個函數中。在某些語言中,全局變量不能在每個地方訪問,它們的行爲更像是extern變量。但是,來自全局變量的數據是f路程存儲在全局工作空間中的,這意味着在使用全局變量的每個函數中都可以訪問當前值。

但是,如果我正確地記得圖中有一個字段叫做UserData,它可以接收一些用戶輸入數據。在那裏定義一個包含你想要改變的所有變量的結構是可能的。當你在另一個工作區需要數據時,只需從該區域讀取數據。

+0

謝謝Patrik,我會研究UserData。 – Leverz 2014-10-31 23:06:15

+0

謝謝Patrik,你在哪裏發現我缺少單個函數缺少的全局變量聲明。從那以後,我有機會搞砸了。 – Leverz 2014-11-01 01:41:56