Verfasst am: 20.04.2011, 08:12
Titel: Variable aus GUI 1 in GUI 2 übernehmen
Hallo zusammen,
ich will eine Variable aus meiner GUI 2 in GUI 1 übernehmen. Dabei will ich GUI 1 starten und u.a. in einem Edit Text (edit1) eine Zahl eintragen, die dann gespeichert werden soll. Dann werden diverse Berechnungen mit dem Wert des edit1 im GUI 2 ausgeführt. Den in GUI 2 resultierenden Wert (in edit17) möchte ich dann wiederum mit pushbutton7 im GUI 1 im edit1 ausgeben und somit den ursprünglichen Wert überschreiben.
Dafür hab ich auch schon gegoogelt und mir durch ein paar Tipps folgenden Code zusammengebastelt:
GUI 1:
Code:
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
mass = str2double(get(hObject,'String'));
a2 = get(hObject,'String');
par = evalin('base','parameter');
% --- 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
par = evalin('base','parameter');
set(hObject,'String',par.vehicle.mass);
function edit17_Callback(hObject, eventdata, handles) % hObject handle to edit17 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
par = evalin('base','parameter');
set(hObject,'String',par.vehicle.mass);
guidata(hObject, handles);
% Hints: get(hObject,'String') returns contents of edit17 as text % str2double(get(hObject,'String')) returns contents of edit17 as a double
% --- Executes during object creation, after setting all properties. function edit17_CreateFcn(hObject, eventdata, handles) % hObject handle to edit17 (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
function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
par = evalin('base','parameter');
total_weight = A+B+C;
par.vehicle.mass = total_weight;
set(hObject,'String',par.vehicle.mass);
% get the main_gui handle (access to the gui)
mainGUIhandle = GUI1;
% get the data from the gui (all handles inside gui_main)
mainGUIdata = guidata(mainGUIhandle);
% change main gui strings set(mainGUIdata.edit1, 'String', get(handles.edit17, 'String'));
% save changed data back into main_gui
%this line updates the data of the Main Gui
guidata(GUI1, mainGUIdata);
[Die Variablen A, B und C sind definiert, ich habs nur nicht hier noch eingefügt].
Nun mein Problem:
Edit1 bekommt beim Aufruf von GUI1 einen Standardwert. Bevor ich den pushbutton7-Code integriert habe, konnte ich im edit1 diesen Wert allerdings beliebig ändern. Nachdem ich pushbutton7 eingeführt habe, kann ich im edit1 einen x-beliebigen Wert reinschreiben, ohne dass die Variable im Wert geändert wird.
Die pushbutton-Prozedur funktioniert aber eigentlich, d.h. der Wert aus GUI2 wird ins edit1 in GUI1 übernommen.
Weiß vllt jmd, woran es liegen könnte, dass der Variablenwert im edit1 immer auf Standardwert bleibt, und wie ich das Problem behebe?
Vermeide doch bitte das Laden und Speichern aus dem Matlabworkspace. Das machts nur unübersichtlicher und schwieriger nachzuvollziehen...
MfG Marco
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.