MATLAB: Get values from callback function

callbackfunctionguiMATLAB

Hi,
I want to create a GUI with two checkboxes, but I don't how to get the values of my checkboxes from my callback function. After clicking on a pushbutton, the values of the checkboxes cbx1 and cbx2 are saved as logial values in val1 and val2. I want my main function to return val1 and val2; is there a way how to do this? I'm a very beginner with GUIs, so there's probably a much more elegant solution.
This is how my window looks like:
2019-04-04 15_27_55-.png
% Main function
function [val1,val2] = checkbox
% Create window:
Pix_SS = get(0,'screensize');
height = 100;
width = 220;
center = [(Pix_SS(3)-width)/2 (Pix_SS(4)-height)/2];
fig = uifigure('Position',[center width height]);
% Create check boxes:
cbx1 = uicheckbox(fig,'Text','Define Window?','Position',[55 70 120 15]);
cbx2 = uicheckbox(fig,'Text','Select Peaks?','Position',[55 40 120 15]);
% Create Pushbutton
btn = uibutton(fig,'Text','OK','Position',[55 10 102 20],...
'ButtonPushedFcn', @(btn,event) ButtonPushed(btn,cbx1,cbx2,fig));
end
% Callback function
function ButtonPushed(cbx1,cbx2,fig)
val1 = cbx1.Value;
val2 = cbx2.Value;
close(fig);
end

Best Answer

Use uiwait and uiresume to wait for the pressing of the button:
...
% Create check boxes:
cbx1 = uicheckbox(fig,'Text','Define Window?','Position',[55 70 120 15]);
cbx2 = uicheckbox(fig,'Text','Select Peaks?','Position',[55 40 120 15]);
% Create Pushbutton
btn = uibutton(fig,'Text','OK','Position',[55 10 102 20],...
'ButtonPushedFcn', {@ButtonPushed, fig});
uiwait(fig);
if isgraphics(fig)
val1 = cbx1.Value;
val2 = cbx2.Value;
delete(fig); % Or: close()
else % Figure was deleted manually using the close icon:
val1 = NaN;
val2 = NaN;
end
end
function ButtonPushed(btn, EventData, fig)
uiresume(fig);
end
Related Question