hier wurde das schonmal gefragt und beantwortet, mir ist das aber nicht ganz klar.
Ich habe mir eine kleine Gui (mit Guide) gebastelt, in der ein Edit-Feld (edit1) ein Textfeld (text1) und zwei pushbuttons drin sind:
Code:
functionvarargout = tmp_test(varargin) % TMP_TEST M-file for tmp_test.fig % TMP_TEST, by itself, creates a new TMP_TEST or raises the existing % singleton*.
%
% H = TMP_TEST returns the handle to a new TMP_TEST or the handle to % the existing singleton*.
%
% TMP_TEST('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in TMP_TEST.M with the given input arguments.
%
% TMP_TEST('Property','Value',...) creates a new TMP_TEST or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before tmp_test_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to tmp_test_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 tmp_test
% Last Modified by GUIDE v2.5 27-May-2010 10:54:17
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @tmp_test_OpeningFcn, ...
'gui_OutputFcn', @tmp_test_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before tmp_test is made visible. function tmp_test_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 tmp_test (see VARARGIN)
% Choose default command line output for tmp_test
handles.output = hObject;
% UIWAIT makes tmp_test wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = tmp_test_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 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. ifispc && 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)
a=get(handles.edit1,'String');
set(handles.text1,'String',a);
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
b=get(handles.edit1,'String');
c=get(handles.text1,'String');
disp(['edit: ',b,'; text: ',c]);
Mit dem einen pushbutton übergebe ich den Wert des Edit-Feldes zum Textfeld, mit dem zweiten hab ich mir die aktuellen Werte von edit1 und text1 ausgeben lassen.
Ich speichere ja nirgendwo mittels guidate die geänderten Werte ab, trotzdem funktioniert alles wie es soll, daher, wozu brauche ich "guidata"? Ich kapier nämlich nicht, wann ich das benutzen müsste, und wann ich es nicht brauche.
"guidata(object_handle,data) stores the variable data as GUI data. If object_handle is not a figure handle, then the object's parent figure is used. data can be any MATLAB variable, but is typically a structure, which enables you to add new fields as required." (Matlab Doc)
Du brauchst den Befehl z.B. für den Fall, wo du neue Felder deiner handles-Struktur hinzufügen willst.
Beispiel:
In function1 wird definiert:
handles.DeineNeueVariable = magic(3);
In function2 kann dann jedoch nicht auf handles.DeineNeueVariable zugegriffen werden, .. es sei denn, du setzt in function1 guidata(hObject, handles) (hObject ist das figure/parent handle).
Bei "GUI data" ist das nicht notwendig. Daher funktioniert auch dein gepostetes Beispiel.
LG Trimax
TMC
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.06.2010, 13:50
Titel:
Aha, also bei Änderungen von Daten die in der Struktur automatisch durch GUIDE erstellt wurden, funktioniert das auch von alleine. Danke für die Erklärung.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.