MATLAB Answers

Using a callback function which accesses two handles

8 views (last 30 days)
Pascal
Pascal on 12 May 2014
Commented: Pascal on 13 May 2014
Hello, here is the problem: my function creates two figures. The first figure contains a radio button, which callback function I would like to access both figures' data.
The code is something like this:
h=figure(...'tag',h);
parametres = uipanel(..);
h2=figure(...'tag',h2);
uicontrol('Parent',parametres,'Style','radiobutton','String','Pa','Units','pixels','Position',[240 95 120 15],'BackgroundColor','white','tag','bouton_Pa','Callback',@bouton_Pa_Callback,'KeyPressFcn',@key_bouton_PaetdB);
The callback function is :
function bouton_Pa_Callback(hObject,event)
%I tried using h2 as an input for the function, like (hObject,event,h2), didn't work
handles = guidata(gcbf);
handles2 = guidata(h2); % *This is where I get an error*
Apparently, gcbf can get the handle of the figure the button is located in (h), but if I try to get the data from h2 (which I believe to be the handle of the second figure), I get:
Undefined function or variable 'h2'.
How can I access the handle of a figure when I'm coding inside the callback function of a button located in another figure? I read that you could store and retrieve data from the GUI with getappdata and setappdata, but that would require me to "manually" create a variable containing all the figures' data, which is exactly what guidata is supposed to do, no?
Thanks :)

  0 Comments

Sign in to comment.

Accepted Answer

per isakson
per isakson on 12 May 2014
Edited: per isakson on 12 May 2014
A problems is that there are so many different ways.
One way is to use the property Tag in combination with findobj. Thus
the_other_figure_handle = findobj( 0, 'Type','Figure' ...
, 'Tag' ,'a_good_name' );

  3 Comments

Pascal
Pascal on 13 May 2014
Thanks, it works.
Would declaring all the handles as global variables have helped?
per isakson
per isakson on 13 May 2014
Yes, but don't make it a habit to use globals. I guess, globals and the tag-findobj approach are ok only with small programs.
Pascal
Pascal on 13 May 2014
In that case, what solution would you have recommended for large programs dealing with multiple GUI figures, in which the callback functions had to access a lot of data from different figures?

Sign in to comment.

More Answers (0)


Translated by