Get values from callback function
4 ビュー (過去 30 日間)
古いコメントを表示
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:

% 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
2 件のコメント
Jan
2019 年 4 月 4 日
Note: You cann the callback by
ButtonPushed(btn,cbx1,cbx2,fig)
but the function header is
ButtonPushed(cbx1,cbx2,fig) % 1st input missing
But the solution does not need the inputs of the callback.
Adam
2019 年 4 月 4 日
You may also find
doc questdlg
or
doc uiconfirm
useful for simple UI-based things like this. I generally very quickly run into wanting to do something more than the very basic functionality they offer so write my own anyway, but they can handle all this for you for a simple 2-option question.
questdlg is the old version and uiconfirm uses the newer style uifigure, but since it is a standalone transient dialog either works fine here.
採用された回答
Jan
2019 年 4 月 4 日
編集済み: Jan
2019 年 4 月 5 日
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
2 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Interactive Control and Callbacks についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!