我可以遍历图形中的 uicontrol 吗?
can I iterate through uicontrols in a figure?
我想遍历图形中的 uicontrol 切换按钮,以便递归函数可以检查相邻的 uicontrol 切换按钮并相应地修改它们。
我在图中创建了一个 uicontrol togglebutton 网格,如下所示:
函数 create_field(hparent, numX, numY, width, padding)
set(hparent, 'Units', 'pixels');
ppos = get(hparent, 'Position');
ppos(3) = numX*width + (numX-1)*padding;
ppos(4) = numY*width + (numY-1)*padding;
set(hparent, 'Position', ppos);
for i = 1:numX
for j = 1:numY
bPos = [ % Button spec:
(i-1)*(width+padding) % - X
(j-1)*(width+padding) % - Y
width % - W
width % - H
];
uicontrol( ...
'Units', 'pixels', ...
'Tag', sprintf('X%dY%dS%d',i,j,state), ...
'Style', 'togglebutton', ...
'Parent', hparent, ...
'Position', bPos, ...
'Callback', @reveal ...
);
end;
end;
end
在创建 uicontrol 之后是否可以循环访问它们?或者,如果那不可能,我将如何将元胞数组中的 uicontrolls 添加到图中?
您可以使用 findobj
来...
例如,这里是如何仅在图中查找所有切换按钮:
toggleBtns = findobj(myFig, 'Style', 'togglebutton');
编辑
或者,您可以按照建议将所有切换按钮句柄保存在元胞数组中,稍后使用 guidata
:
找回它们
% Create buttons
cellToggleBtns{end+1} = uicontrols(...);
% Save their handles within figure data
data = guidata(fig);
data.AllToggleBtns = cellToggleBtns;
guidata(fig, data);
稍后在代码或回调中:
% Retreive toggle buttons handles
data = guidata(fig);
toggleBtns = data.AllToggleBtns;
我想遍历图形中的 uicontrol 切换按钮,以便递归函数可以检查相邻的 uicontrol 切换按钮并相应地修改它们。
我在图中创建了一个 uicontrol togglebutton 网格,如下所示: 函数 create_field(hparent, numX, numY, width, padding)
set(hparent, 'Units', 'pixels');
ppos = get(hparent, 'Position');
ppos(3) = numX*width + (numX-1)*padding;
ppos(4) = numY*width + (numY-1)*padding;
set(hparent, 'Position', ppos);
for i = 1:numX
for j = 1:numY
bPos = [ % Button spec:
(i-1)*(width+padding) % - X
(j-1)*(width+padding) % - Y
width % - W
width % - H
];
uicontrol( ...
'Units', 'pixels', ...
'Tag', sprintf('X%dY%dS%d',i,j,state), ...
'Style', 'togglebutton', ...
'Parent', hparent, ...
'Position', bPos, ...
'Callback', @reveal ...
);
end;
end;
end
在创建 uicontrol 之后是否可以循环访问它们?或者,如果那不可能,我将如何将元胞数组中的 uicontrolls 添加到图中?
您可以使用 findobj
来...
例如,这里是如何仅在图中查找所有切换按钮:
toggleBtns = findobj(myFig, 'Style', 'togglebutton');
编辑
或者,您可以按照建议将所有切换按钮句柄保存在元胞数组中,稍后使用 guidata
:
% Create buttons
cellToggleBtns{end+1} = uicontrols(...);
% Save their handles within figure data
data = guidata(fig);
data.AllToggleBtns = cellToggleBtns;
guidata(fig, data);
稍后在代码或回调中:
% Retreive toggle buttons handles
data = guidata(fig);
toggleBtns = data.AllToggleBtns;