簡體   English   中英

我可以通過圖中的uicontrols進行迭代嗎?

[英]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添加到圖中?

您可以findobj使用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; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM