ich habe vor wenigen tagen das schreiben meiner masterarbeit begonnen. dafür benötige ich matlab. ich möchte mit guis arbeiten, um ein programm zu schreiben.
das programm soll aus ganz vielen unterguis bestehen, die über eine hauptgui aufgerufen werden. in den unterguis möchte ich meine daten für die jeweiligen masken eingeben. insgesamt soll es 4 grundelemente geben, die einzelne guimasken haben sollen, auf denen man ihre parameter manuell eingeben kann. je nach dem wie viele der grundelemente ich in der hauptgui ausgewählt habe (mehrfache Auswahl eines Elementes ist möglich), destso mehr guis vom jeweiligen ausgewählten grundelementtyp sollen entstehen. nachdem ich dann alle eingaben/parameter in den 'unterguis' (guis der grundelemente) eingegeben habe, möchte ich diese zum einen zusammengefasst auf der hauptgui anzeigen lassen und zum anderen speichern können, so dass ich beim erneuten start meiner hauptgui gleich alle daten der unterguis, die ich zuvor gespeichert habe, sofort wieder eingetragen habe. hat jemand eine idee, ob soetwas überhaupt funktioniert. und wenn ja, wie ich das ganze programmieren könnte?
Über setappdata und getappdata habe ich das ganze jetzt gelöst. Allerdings mehr oder weniger durch zufall. ich verstehe den befehl nicht wirklich. ich habe eine hauptgui gebaut mit folgendem code:
Code:
function HauptGUI_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 HauptGUI (see VARARGIN)
% Choose default command line output for HauptGUI
handles.output = hObject;
% UIWAIT makes HauptGUI wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = HauptGUI_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 button press in pb_dateninuntergui. function pb_dateninuntergui_Callback(hObject, eventdata, handles) % hObject handle to pb_dateninuntergui (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) text = get(handles.edit_hauptgui, 'String');
setappdata(0,'haupt',text);
function edit_hauptgui_Callback(hObject, eventdata, handles) % hObject handle to edit_hauptgui (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 edit_hauptgui as text % str2double(get(hObject,'String')) returns contents of edit_hauptgui as a double
% --- Executes during object creation, after setting all properties. function edit_hauptgui_CreateFcn(hObject, eventdata, handles) % hObject handle to edit_hauptgui (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 pb_untergui. function pb_untergui_Callback(hObject, eventdata, handles) % hObject handle to pb_untergui (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
UnterGUI
der button, mit dem man dann in die untergui gelangt ist wie folgt belegt:
Code:
function pb_untergui_Callback(hObject, eventdata, handles) % hObject handle to pb_untergui (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
UnterGUI
Die untergui habe ich mit folgendem code geschrieben:
Code:
function UnterGUI_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 UnterGUI (see VARARGIN)
% Choose default command line output for UnterGUI
handles.output = hObject;
% UIWAIT makes UnterGUI wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = UnterGUI_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 button press in pb_dateninhauptgui. function pb_dateninhauptgui_Callback(hObject, eventdata, handles) % hObject handle to pb_dateninhauptgui (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) text = get(handles.edit_untergui, 'String');
setappdata(0,'unter',text);
function edit_untergui_Callback(hObject, eventdata, handles) % hObject handle to edit_untergui (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 edit_untergui as text % str2double(get(hObject,'String')) returns contents of edit_untergui as a double
% --- Executes during object creation, after setting all properties. function edit_untergui_CreateFcn(hObject, eventdata, handles) % hObject handle to edit_untergui (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 pb_back. function pb_back_Callback(hObject, eventdata, handles) % hObject handle to pb_back (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
HauptGUI
der button, der zum zurückkommen in die hauptgui dient ist wie folgt belegt:
Code:
function pb_back_Callback(hObject, eventdata, handles) % hObject handle to pb_back (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
HauptGUI
Mein Problem an der ganzen sache ist, dass ich nicht verstehe, wieso ich z.b. bei
getappdata(0,'haupt') schreiben muss.
Also ich versteh das so, dass das 'haupt' den namen des objekts angibt, aus dem ich die daten haben möchte. aber was gibt mir die 0 an? und wieso funktioniert das ganze nicht mehr, wenn ich alle nullen in setappdata und getappdata durch einen beliebig anderen namen, meintwegen test, ersetze. sprich wieso ginge nicht auch getappdata(test,'haupt')?
das kapiere ich einfach nicht. also die datenübergabe ist wenn man so will mehr oder weniger zufällig entstanden. Kann mir jemand helfen?
versuche dich mal in den Leser hineinzuversetzen. Was soll man denn mit deinem ganzen Code machen? Am Ende kommt dann eine verhältnismäßig kleine Frage, für die man den Code eigentlich gar nicht ansehen muss.
Zitat:
Mein Problem an der ganzen sache ist, dass ich nicht verstehe, wieso ich z.b. bei getappdata(0,'haupt') schreiben muss.
An sich sollte die Doku das erklären. Das erste Argument ist das Graphik-Objekt, in dem die Daten hinterlegt sind. 0 steht für die MATLAB-Sitzung. Um Konflikte zu vermeiden und dafür zu sorgen, dass die Daten nach Beenden der GUI auch freigegeben werden, würde ich nicht 0 verwenden, sondern den Verweis auf die GUI. Wenn es nicht umbenannt wurde, dann etwas in der Form
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.