[英]MATLAB: Changing the figure height causes children uicontrols to shift in the corresponding direction
[英]can I iterate through uicontrols in a figure?
我想遍歷圖中的uicontrol切換按鈕,以便遞歸函數可以檢查相鄰的uicontrol切換按鈕並相應地對其進行修改。
我已經在一個像這樣的圖中創建了一個uicontrol切換按鈕網格:function 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
無論如何,在創建uicontrols之后是否要對其進行迭代? 或者,如果不可能的話,如何將單元格數組中的uicontrolls添加到圖中?
例如,以下是僅在圖中查找所有切換按鈕的方法:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.