How do I get the handle of my current .fig?
Afficher commentaires plus anciens
Goodnight.
I have the following question. I have 2 .fig files with their respective .m files. In one of the .fig (whose name is -untitled-) create a button to allow me to open the other .fig called -untitled2-. -Untitled2- has a -slider- object that when I move it I want it to redirect the value that it takes to my .fig -untitled-, but the "handles" keeps the button values that allowed me to open the .fig -Untitled2-. I leave codes for further understanding:
Button:
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)
openfig('untitled2.fig');
Slide:
function slider1_Callback(hObject, ~, handles)
guidata(hObject,handles);
valor = get(hObject,'value');
set(handles.text2,'String',valor)
handles.data_untitled = valor;
guidata(hObject, handles);
untitled_h = untitled();
The code works for me to send the -slider- data if and only if I do not use the button, that is, directly executing .fig where the -slider- is, but what I want is to be able to open the figure with the button, and then manipulate the -slider- so that it allows me to send the information back to a variable that I have in untitled.m ", which I am not achieving because I suspect that my "handles" is not taking the objects in the figure " untitled2 ".
I leave images for a little more clarity.



I would appreciate your help with this problem. Thank you.
5 commentaires
Walter Roberson
le 21 Mai 2020
provided that you are using traditional figures
figs = findobj(get(groot, 'children'), 'flat', 'type', 'figure')
otherfig = setdiff(figs, ancestor(hObject, 'figure'))
guidata(otherfig)
Pedro Guevara
le 22 Mai 2020
Geoff Hayes
le 22 Mai 2020
Pedro - are you still using this code?
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)
openfig('untitled2.fig');
I understand what you are trying to do but this is does not open a functioning GUI. From the Limitation section of openfig, ...do not use openfig to open FIG-files created with GUIDE.... While this brings up the figure for the GUI, it does not initialize the GUI components (which is why the handles structure will be empty). When launching a GUIDE GUI from another GUI, just do
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)
untitled2;
If you need to save the figure handle of this second GUI in your first GUI, just do
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)
handles.otherGui = untitled2;
guidata(hObject, handles);
and then other callbacks in your first GUI would use handles.otherGui when (if) needed.
Pedro Guevara
le 22 Mai 2020
Geoff Hayes
le 22 Mai 2020
Glad it worked out!
Réponses (0)
Catégories
En savoir plus sur Printing and Saving dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!