how to run a script within a GUI file?

3 visualizzazioni (ultimi 30 giorni)
ludvikjahn
ludvikjahn il 19 Feb 2015
Risposto: ludvikjahn il 19 Feb 2015
Good Morning, I have created this simple script in GUI which takes two values from 2 pop-up menus and then separatesa matrix between this two values:
function varargout = PROVE(varargin) % PROVE MATLAB code for PROVE.fig % PROVE, by itself, creates a new PROVE or raises the existing % singleton*. % % H = PROVE returns the handle to a new PROVE or the handle to % the existing singleton*. % % PROVE('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in PROVE.M with the given input arguments. % % PROVE('Property','Value',...) creates a new PROVE or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before PROVE_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to PROVE_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help PROVE
% Last Modified by GUIDE v2.5 19-Feb-2015 11:31:55
% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @PROVE_OpeningFcn, ... 'gui_OutputFcn', @PROVE_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 PROVE is made visible. function PROVE_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to PROVE (see VARARGIN)
% Choose default command line output for PROVE handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes PROVE wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = PROVE_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;
% --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 contents = cellstr(get(hObject,'String')) inizio=contents{get(hObject,'Value')} % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on selection change in popupmenu2. function popupmenu2_Callback(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu2 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu2 contents2 = cellstr(get(hObject,'String')) fine=contents2{get(hObject,'Value')} % --- Executes during object creation, after setting all properties. function popupmenu2_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
val1=str2double(inizio);
I=find(A(:,1)==val1); if isempty(I) L=(A(:,1)<=val1); L2=A(:,1).*L; I=find(A(:,1)==max(L2)); end
val2=str2double(fine);
J=find(A(:,1)==val2); if isempty(J) K=(A(:,1)<=val2); K2=A(:,1).*K; J=find(A(:,1)==max(K2)); end global B B=A(I:J,:)
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
COULD YOU PLEASE SUGGEST ME HOW TO CREATE THIS FUNCTION INSIDE A GUI? tHANKS, GAbriele
  2 Commenti
Adam
Adam il 19 Feb 2015
Please format code in a '{} Code' block.
I'm not clear what it is you are asking. You have pasted in what looks like GUIDE GUI code then you ask how to create this function inside a GUI which it already seems to be, under the pushbutton1 callback.
ludvikjahn
ludvikjahn il 19 Feb 2015
Modificato: ludvikjahn il 19 Feb 2015
I am sorry but I am quite new to Matlab, but I just need this thign quickly: just cannot find where to solve the problem: I create two variables: "inizio" and "fine", but when I add my script under the pushbutton section:
{val1=str2double(inizio);
I=find(A(:,1)==val1);
if isempty(I)
L=(A(:,1)<=val1);
L2=A(:,1).*L;
I=find(A(:,1)==max(L2));
end
val2=str2double(fine);
J=find(A(:,1)==val2);
if isempty(J)
K=(A(:,1)<=val2);
K2=A(:,1).*K;
J=find(A(:,1)==max(K2));
end
B=A(I:J,:)
that doesn't even start to work. Thank's Gabriele

Accedi per commentare.

Risposta accettata

ludvikjahn
ludvikjahn il 19 Feb 2015
OK, I understood everything...thank's alot! Now it works

Più risposte (1)

Adam
Adam il 19 Feb 2015
What do you mean by "doesn't even start to work"?
Does it produce error messages (in which case please post them) or do you just mean that you run it and you see nothing resulting from doing that?
If it is the latter then that is to be expected as your code is in the scope of the callback only. When the callback exits any local variables created within it (such as 'B' above) will simply be cleared.
If you wish to keep them you need to attach them to the handles struct as e.g.
handles.B = B;
guidata( hObject, handles )
at the end of your callback (and the same for any other variables you wish to keep).
What to do after that depends what you wish to do with these results. As it stands they will sit under your UI and be accessible to any callback of the UI (if you make the above changes) via retrieval from the handles struct, but they will not be saved to the base workspace.
I think there are ways to do that, but personally I have never had need to have a front end UI yet require to deal with the results in the base workspace. All my code works with the results under the UI, usually ending up with plotting something or updating a text box or slider or something else on the UI.

Categorie

Scopri di più su Graphics Object Programming in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by