WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wozu Befehl guidata benötigt?

 

TMC

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2010, 10:10     Titel: Wozu Befehl guidata benötigt?
  Antworten mit Zitat      
Hallo,

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:
function varargout = 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',   []);
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 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;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes tmp_test wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = 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.
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)
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.

Viele Grüße

Thomas

tmp_test.m
 Beschreibung:
Die *.m Datei zur GUI

Download
 Dateiname:  tmp_test.m
 Dateigröße:  4.34 KB
 Heruntergeladen:  528 mal
tmp_test.fig
 Beschreibung:
Die *.fig Datei zur GUI

Download
 Dateiname:  tmp_test.fig
 Dateigröße:  2.36 KB
 Heruntergeladen:  443 mal


Trimax
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 54
Anmeldedatum: 09.04.09
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 07.06.2010, 11:03     Titel:
  Antworten mit Zitat      
"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
Private Nachricht senden Benutzer-Profile anzeigen
 
TMC

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2010, 13:50     Titel:
  Antworten mit Zitat      
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.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.