Main Content

GUIDE에서 콜백 작성하기

참고

GUIDE 환경은 향후 릴리스에서 제거될 예정입니다. GUIDE가 제거된 후에도 기존 GUIDE 앱은 MATLAB®에서 계속 실행할 수 있지만 GUIDE에서 편집할 수는 없게 됩니다.

기존의 GUIDE 앱을 계속 편집하려면 GUIDE 마이그레이션 전략 항목에서 향후 MATLAB 릴리스와의 앱 호환성을 유지하는 방법에 대한 내용을 참고하십시오. 대화형 방식으로 새 앱을 만들려면 앱 디자이너를 사용하여 앱 개발하기 항목을 대신 참조하십시오.

여러 사용자 동작에 대한 콜백

UI 컴포넌트와 그래픽스 컴포넌트에는 특정 콜백 함수에 연결할 수 있는 속성이 있습니다. 각 속성은 특정 사용자 동작에 해당합니다. 예를 들어, uicontrol에는 Callback 속성이 있습니다. 이 속성의 값을 콜백 함수에 대한 핸들, 익명 함수 또는 MATLAB 표현식이 포함된 문자형 벡터로 설정할 수 있습니다. 이 속성을 설정하면 사용자가 uicontrol과 상호 작용할 때 앱이 응답하게 됩니다. Callback 속성에 값을 지정하지 않으면 사용자가 uicontrol과 상호 작용할 때 어떤 동작도 일어나지 않습니다.

다음 표에는 사용할 수 있는 콜백 속성, 콜백 함수를 트리거하는 사용자 동작, 콜백 속성을 사용하는 가장 일반적인 UI 컴포넌트와 그래픽스 컴포넌트가 나열되어 있습니다.

콜백 속성

사용자 동작

이 속성을 사용하는 컴포넌트

ButtonDownFcn

포인터가 컴포넌트 또는 Figure 위에 있을 때 최종 사용자가 마우스 버튼을 누릅니다.

axes, figure, uibuttongroup, uicontrol, uipanel, uitable,

Callback

최종 사용자가 컴포넌트를 트리거합니다. 예를 들어, 메뉴 항목 선택, 슬라이더 이동, 누름 버튼 누르기 등이 이에 해당합니다.

uicontextmenu, uicontrol, uimenu

CellEditCallback

셀을 편집할 수 있는 테이블에서 최종 사용자가 값을 편집합니다.

uitable

CellSelectionCallback

최종 사용자가 테이블에서 셀을 선택합니다.

uitable

ClickedCallback

최종 사용자가 푸시 툴 또는 토글 툴을 마우스 왼쪽 버튼으로 클릭합니다.

uitoggletool, uipushtool

CloseRequestFcn

Figure가 닫힙니다.

figure

CreateFcn

MATLAB이 객체를 만들면 이 객체가 표시되기 전에 콜백이 실행됩니다.

axes, figure, uibuttongroup, uicontextmenu, uicontrol, uimenu, uipushtool, uipanel, uitable, uitoggletool, uitoolbar

DeleteFcn

MATLAB이 Figure를 삭제하기 직전에 콜백이 실행됩니다.

axes, figure, uibuttongroup, uicontextmenu, uicontrol, uimenu, uipushtool, uipanel, uitable, uitoggletool, uitoolbar

KeyPressFcn

포인터가 객체 위에 있을 때 최종 사용자가 키보드 키를 누릅니다.

figure, uicontrol, uipanel, uipushtool, uitable, uitoolbar

KeyReleaseFcn

포인터가 객체 위에 있을 때 최종 사용자가 키보드 키를 놓습니다.

figure, uicontrol, uitable

OffCallback

토글 툴의 State'off'로 변경될 때 실행됩니다.

uitoggletool

OnCallback

토글 툴의 State'on'으로 변경될 때 실행됩니다.

uitoggletool

SizeChangedFcn

최종 사용자가 Resize 속성이 'on'인 버튼 그룹, Figure 또는 패널의 크기를 조정합니다.

figure, uipanel, uibuttongroup

SelectionChangedFcn

최종 사용자가 버튼 그룹 내에서 여러 라디오 버튼 또는 토글 버튼을 선택합니다.

uibuttongroup

WindowButtonDownFcn

포인터가 Figure 창에 있을 때 최종 사용자가 마우스 버튼을 누릅니다.

figure

WindowButtonMotionFcn

최종 사용자가 Figure 창 내에서 포인터를 이동합니다.

figure

WindowButtonUpFcn

최종 사용자가 마우스 버튼을 놓습니다.

figure

WindowKeyPressFcn

포인터가 Figure 또는 Figure의 자식 객체 위에 있을 때 최종 사용자가 키를 누릅니다.

figure

WindowKeyReleaseFcn

포인터가 Figure 또는 Figure의 자식 객체 위에 있을 때 최종 사용자가 키를 놓습니다.

figure

WindowScrollWheelFcn

포인터가 Figure 위에 있을 때 최종 사용자가 마우스 휠을 돌립니다.

figure

GUIDE로 생성한 콜백 함수와 속성값

GUIDE에서 콜백 함수와 속성을 관리하는 방법

uicontrol 컴포넌트, uimenu 컴포넌트 또는 uicontextmenu 컴포넌트를 UI에 추가하면 UI를 저장하기 전에 GUIDE가 Callback 속성을 값 %automatic으로 채웁니다. 이 값은 GUIDE가 콜백 함수의 이름을 생성한다는 것을 나타냅니다.

UI를 저장하면 GUIDE는 코드 파일에 빈 콜백 함수 정의를 추가하고 컨트롤의 Callback 속성을 익명 함수로 설정합니다. 다음 함수 정의는 GUIDE로 생성한, 누름 버튼에 대한 콜백 함수의 예입니다.

function pushbutton1_Callback(hObject,eventdata,handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

end
이름 myui로 이 UI를 저장하면 GUIDE는 누름 버튼의 Callback 속성을 다음 값으로 설정합니다.
@(hObject,eventdata)myui('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
위의 값은 함수 pushbutton1_Callback에 대한 참조 역할을 하는 익명 함수입니다. 이 익명 함수에는 4개의 입력 인수가 있습니다. 첫 번째 인수는 콜백 함수의 이름입니다. 나머지 3개 인수는 MATLAB에서 제공되며 섹션 GUIDE 콜백 구문에서 다룹니다.

참고

GUIDE는 테이블, 패널, 버튼 그룹과 같은 기타 UI 컴포넌트에 대해서는 콜백 함수를 자동으로 생성하지 않습니다. 이러한 컴포넌트에서 콜백 함수를 실행하도록 하려면 레이아웃에서 컴포넌트를 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴의 콜백 보기 아래에서 항목을 선택하여 콜백을 만들어야 합니다.

GUIDE 콜백 구문

모든 콜백은 최소 3개 이상의 입력 인수를 받아야 합니다.

  • hObject — 콜백을 트리거하는 UI 컴포넌트입니다.

  • eventdata — 특정 마우스 동작 또는 키보드 동작에 대한 자세한 정보가 포함된 변수입니다.

  • handles — UI의 모든 객체가 포함된 struct입니다. GUIDE는 guidata 함수를 사용하여 이 구조체를 저장하고 관리합니다.

콜백 함수가 추가 인수를 받을 수 있도록 하려면 함수 정의에서 인수 목록 끝에 추가 인수를 포함시켜야 합니다.

eventdata 인수

eventdata 인수는 특정 콜백 함수에 자세한 정보를 제공합니다. 예를 들어, 최종 사용자가 KeyPressFcn을 트리거하면 MATLAB은 최종 사용자가 누른 특정 키 또는 키 조합에 관한 정보를 제공합니다. eventdata를 콜백 함수에서 사용할 수 없으면 MATLAB은 이 인수를 빈 배열로 전달합니다. 다음 표에는 eventdata를 사용하는 콜백과 컴포넌트가 나열되어 있습니다.

콜백 속성 이름컴포넌트
WindowKeyPressFcn
WindowKeyReleaseFcn
WindowScrollWheel
figure
KeyPressFcnfigure, uicontrol, uitable
KeyReleaseFcnfigure, uicontrol, uitable
SelectionChangedFcnuibuttongroup
CellEditCallback
CellSelectionCallback
uitable

GUIDE 콜백 간 데이터 공유하기

상호 종속적인 컨트롤, 메뉴, 그래픽스 객체를 앱에 만들려면 그러한 컴포넌트에 액세스할 필요가 있는 앱의 특정 부분들과 반드시 명시적으로 데이터를 공유해야 합니다.

방법설명요건 및 장단점
UserData 사용하기

컴포넌트 객체를 통해 직접 속성값을 가져오거나 설정합니다.

모든 UI 컴포넌트에는 어떤 MATLAB 데이터도 저장할 수 있는 UserData 속성이 있습니다.

  • 속성을 설정하거나 가져오려면 컴포넌트에 액세스할 수 있어야 합니다.

  • UserData에는 한 번에 하나의 변수만 저장할 수 있지만, struct 배열 또는 셀형 배열을 사용하면 여러 개의 값을 저장할 수 있습니다.

애플리케이션 데이터 공유하기

setappdata 함수를 사용하여 데이터와 특정 컴포넌트를 연결합니다. getappdata 함수를 사용하여 나중에 데이터에 액세스할 수 있습니다.

  • 애플리케이션 데이터를 설정하거나 가져오려면 컴포넌트에 액세스할 수 있어야 합니다.

  • 여러 개의 변수를 공유할 수 있습니다.

guidata 사용하기

guidata 함수를 사용하여 Figure 창과 데이터를 공유합니다.

  • UI 컴포넌트를 통해 데이터를 저장하거나 가져옵니다.

  • 한 번에 하나의 변수만 저장할 수 있지만, struct 배열 또는 셀형 배열을 사용하여 여러 개의 값을 저장할 수 있습니다.

GUIDE 앱에서 UserData 공유하기

UI 컴포넌트는 자신의 속성에 유용한 정보를 저장합니다. 예를 들어, Value 속성을 쿼리하여 슬라이더의 현재 위치를 찾을 수 있습니다. 또한 모든 컴포넌트에는 어떤 MATLAB 변수도 저장할 수 있는 UserData 속성이 있습니다. 컴포넌트에 대한 액세스가 허용되는 한, 모든 콜백 함수는 UserData 속성에 저장된 값에 액세스할 수 있습니다.

GUIDE 앱이 UserData 속성과 슬라이더 데이터를 공유하도록 설정하려면 다음 단계를 수행하십시오.

  1. 명령 창에 guide를 입력하여 빈 GUI를 새로 엽니다.

  2. 컴포넌트 팔레트에 UI 컴포넌트 이름을 표시합니다.

    1. 파일 > 기본 설정 > GUIDE를 선택합니다.

    2. 컴포넌트 팔레트에 이름 표시를 선택합니다.

    3. 확인을 클릭합니다.

  3. 레이아웃 편집기 왼쪽의 컴포넌트 팔레트에서 누름 버튼 툴을 선택하고 레이아웃 영역으로 끌어서 놓습니다.

  4. 레이아웃 편집기 왼쪽의 컴포넌트 팔레트에서 슬라이더 툴을 선택하고 레이아웃 영역으로 끌어서 놓습니다.

  5. 파일 > 저장을 선택합니다. UI를 myslider.fig로 저장합니다. 그러면 MATLAB이 편집기에서 코드 파일을 엽니다.

  6. 개시 함수 myslider_OpeningFcn에서 UserData 속성의 초기값을 설정합니다. 이 함수는 UI가 사용자에게 표시되기 직전에 실행됩니다.

    myslider_OpeningFcn에서 명령 handles.output = hObject 바로 아래에 다음 명령을 삽입합니다.

    data = struct('val',0,'diffMax',1);
    set(handles.slider1,'UserData',data);
    
    이 명령을 추가하면 myslider_OpeningFcn은 다음과 같이 표시됩니다.
    function myslider_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to junk (see VARARGIN)
    
    % Choose default command line output for myslider
    handles.output = hObject;
    data = struct('val',0,'diffMax',1);
    set(handles.slider1,'UserData',data);
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes myslider wait for user response
    % uiwait(handles.figure1);
    
    handlesmyslider_OpeningFcn에 대한 입력 인수라는 것을 알 수 있습니다. handles 변수는 UI의 모든 컴포넌트가 포함된 구조체입니다. 이 구조체의 각 필드는 개별 컴포넌트에 해당합니다. 각 필드 이름은 해당 컴포넌트의 Tag 속성과 일치합니다. 따라서 handles.slider1은 이 UI의 슬라이더 컴포넌트입니다. 명령 set(handles.slider1,'UserData',data)는 변수 data를 슬라이더의 UserData 속성에 저장합니다.

  7. 데이터를 수정하려면 슬라이더 콜백에 코드를 추가합니다. 함수 slider1_Callback의 끝에 다음 명령을 추가합니다.

    maxval = get(hObject,'Max');  
    sval = get(hObject,'Value');  
    diffMax = maxval - sval;   
    data = get(hObject,'UserData');
    data.val = sval;
    data.diffMax = diffMax;
    % Store data in UserData of slider
    set(hObject,'UserData',data);
    이 명령을 추가하면 slider1_Callback은 다음과 같이 표시됩니다.
    % --- Executes on slider movement.
    function slider1_Callback(hObject, eventdata, handles)
    % hObject    handle to slider1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: get(hObject,'Value') returns position of slider
    %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
    maxval = get(hObject,'Max');  
    sval = get(hObject,'Value');  
    diffMax = maxval - sval;   
    data = get(hObject,'UserData');
    data.val = sval;
    data.diffMax = diffMax;
    % Store data in UserData of slider
    set(hObject,'UserData',data);
    
    hObjectslider1_Callback 함수에 대한 입력 인수라는 것을 알 수 있습니다. hObject는 항상 콜백을 트리거하는 컴포넌트입니다(이 경우에는 슬라이더). 따라서 set(hObject,'UserData',data)data 변수를 슬라이더의 UserData 속성에 저장합니다.

  8. 데이터를 가져오려면 누름 버튼 콜백에 코드를 추가합니다. 함수 pushbutton1_Callback의 끝에 다음 명령을 추가합니다.

    % Get UserData from the slider
    data = get(handles.slider1,'UserData');
    currentval = data.val;
    diffval = data.diffMax;
    display([currentval diffval]);
    이 명령을 추가하면 pushbutton1_Callback은 다음과 같이 표시됩니다.

    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Get UserData from the slider
    data = get(handles.slider1,'UserData');
    currentval = data.val;
    diffval = data.diffMax;
    display([currentval diffval]);

    이 코드는 핸들 구조체를 사용하여 슬라이더에 액세스합니다. 명령 data = get(handles.slider1,'UserData')가 슬라이더의 UserData 속성을 가져옵니다. 그런 다음, display 함수가 저장된 값을 표시합니다.

  9. 편집기 툴스트립에서 저장을 눌러 코드를 저장합니다.

GUIDE 앱에서 애플리케이션 데이터 공유하기

애플리케이션 데이터를 저장하려면 setappdata 함수를 호출하십시오.

setappdata(obj,name,value);
첫 번째 입력값 obj는 데이터가 저장될 컴포넌트 객체입니다. 두 번째 입력값 name은 값을 설명하는 이름입니다. 세 번째 입력값 value는 저장하려는 값입니다.

애플리케이션 데이터를 가져오려면 getappdata 함수를 사용하십시오.

data = getappdata(obj,name);
컴포넌트 obj는 데이터가 포함된 컴포넌트 객체여야 합니다. 두 번째 입력값 name은 데이터를 저장하는 데 사용한 이름과 일치해야 합니다. 변수를 하나만 포함하는 UserData 속성과 달리, setappdata를 사용하면 여러 개의 변수를 저장할 수 있습니다.

GUIDE 앱이 애플리케이션 데이터를 공유하도록 설정하려면 다음 단계를 수행하십시오.

  1. 명령 창에 guide를 입력하여 빈 GUI를 새로 엽니다.

  2. 컴포넌트 팔레트에 UI 컴포넌트 이름을 표시합니다.

    1. 파일 > 기본 설정 > GUIDE를 선택합니다.

    2. 컴포넌트 팔레트에 이름 표시를 선택합니다.

    3. 확인을 클릭합니다.

  3. 레이아웃 편집기 왼쪽의 컴포넌트 팔레트에서 누름 버튼 툴을 선택하고 레이아웃 영역으로 끌어서 놓습니다.

  4. 레이아웃 편집기 왼쪽의 컴포넌트 팔레트에서 슬라이더 툴을 선택하고 레이아웃 영역으로 끌어서 놓습니다.

  5. 파일 > 저장을 선택합니다. UI를 myslider.fig로 저장합니다. 그러면 MATLAB이 편집기에서 코드 파일을 엽니다.

  6. 개시 함수 myslider_OpeningFcn에서 애플리케이션 데이터의 초기값을 설정합니다. 이 함수는 UI가 사용자에게 표시되기 직전에 실행됩니다. myslider_OpeningFcn에서 명령 handles.output = hObject 바로 아래에 다음 명령을 삽입합니다.

    setappdata(handles.figure1,'slidervalue',0); 
    setappdata(handles.figure1,'difference',1);
    이 명령을 추가하면 myslider_OpeningFcn은 다음과 같이 표시됩니다.
    function myslider_OpeningFcn(hObject,eventdata,handles,varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to junk (see VARARGIN)
    
    % Choose default command line output for junk
    handles.output = hObject;
    setappdata(handles.figure1,'slidervalue',0); 
    setappdata(handles.figure1,'difference',1);
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes junk wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    handlesmyslider_OpeningFcn에 대한 입력 인수라는 것을 알 수 있습니다. handles 변수는 UI의 모든 컴포넌트가 포함된 구조체입니다. 이 구조체의 각 필드는 개별 컴포넌트에 해당합니다. 각 필드 이름은 해당 컴포넌트의 Tag 속성과 일치합니다. 이 경우, handles.figure1은 Figure 객체입니다. 따라서 setappdata는 이 Figure 객체를 사용하여 데이터를 저장합니다.

  7. 데이터를 변경하려면 슬라이더 콜백에 코드를 추가합니다. 함수 slider1_Callback의 끝에 다음 명령을 추가합니다.

    maxval = get(hObject,'Max');  
    currval = get(hObject,'Value');  
    diffMax = maxval - currval;   
    % Store application data
    setappdata(handles.figure1,'slidervalue',currval); 
    setappdata(handles.figure1,'difference',diffMax);
    이 명령을 추가하면 slider1_Callback은 다음과 같이 표시됩니다.
    function slider1_Callback(hObject, eventdata, handles)
    % hObject    handle to slider1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: get(hObject,'Value') returns position of slider
    %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
    maxval = get(hObject,'Max');  
    currval = get(hObject,'Value');  
    diffMax = maxval - currval;   
    % Store application data
    setappdata(handles.figure1,'slidervalue',currval); 
    setappdata(handles.figure1,'difference',diffMax);
    이 콜백 함수는 handles 구조체에 액세스할 수 있기 때문에 setappdata 명령은 handles.figure1에 데이터를 저장합니다.

  8. 데이터를 가져오려면 누름 버튼 콜백에 코드를 추가합니다. 함수 pushbutton1_Callback의 끝에 다음 명령을 추가합니다.

    % Retrieve application data
    currentval = getappdata(handles.figure1,'slidervalue');
    diffval = getappdata(handles.figure1,'difference');
    display([currentval diffval]);
    이 명령을 추가하면 pushbutton1_Callback은 다음과 같이 표시됩니다.
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Retrieve application data
    currentval = getappdata(handles.figure1,'slidervalue');
    diffval = getappdata(handles.figure1,'difference');
    display([currentval diffval]);
    이 콜백 함수는 handles 구조체에 액세스할 수 있기 때문에 getappdata 명령은 handles.figure1에서 데이터를 가져옵니다.

  9. 편집기 툴스트립에서 저장을 눌러 코드를 저장합니다.

guidata를 사용하여 GUIDE 앱에 데이터를 저장하고 공유하기

GUIDE는 guidata 함수를 사용하여 모든 UI 컴포넌트가 포함된 handles 구조체를 저장합니다. 그러면 MATLAB은 handles 배열을 모든 콜백 함수에 전달합니다. guidata를 사용하여 추가 데이터를 공유하려면 개시 함수에서 handles 구조체에 필드를 추가합니다. 개시 함수는 코드 파일 상단에 정의되어 있는 함수로, 이름에 _OpeningFcn이 포함되어 있습니다.

콜백 함수에서 데이터를 수정하려면 handles 구조체를 수정한 다음, guidata 함수를 사용하여 저장하십시오. 다음 슬라이더 콜백 함수에서는 GUIDE 콜백 함수에서 handles 구조체를 수정하여 저장하는 방법을 보여줍니다.

function slider1_Callback(hObject, eventdata,handles)
% hObject   handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles   structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range
	handles.myvalue = 2;
	guidata(hObject,handles);
end 

GUIDE 예제: guidata를 사용하여 슬라이더 데이터 공유하기

다음은 사전 작성된 GUIDE 앱으로, guidata 함수를 사용하여 슬라이더와 텍스트 필드 간에 데이터를 공유합니다. 슬라이더를 이동하면, 텍스트 필드에 표시된 숫자가 새로운 슬라이더 위치에 맞게 변경되어 표시됩니다.

GUIDE 예제: 2개의 앱 간에 데이터 공유하기

다음은 사전 작성된 GUIDE 앱으로, 애플리케이션 데이터와 guidata 함수를 사용하여 두 대화 상자 간에 데이터를 공유합니다. 두 번째 대화 상자에 텍스트를 입력하고 OK를 클릭하면 첫 번째 대화 상자에서 버튼 레이블이 변경됩니다.

changeme_main.m에서 buttonChangeMe_Callback 함수는 다음 명령을 실행하여 두 번째 대화 상자를 표시합니다.

changeme_dialog('changeme_main', handles.figure)

handles.figure 입력 인수는 changeme_main 대화 상자의 Figure 객체입니다.

changeme_dialog 함수는 Figure 객체에서 handles 구조체를 가져옵니다. 따라서 changeme_main 대화 상자의 전체 컴포넌트 집합을 두 번째 대화 상자에서 사용할 수 있습니다.

GUIDE 예제: 3개의 앱 간에 데이터 공유하기

다음은 사전 작성된 GUIDE 앱으로, guidataUserData를 사용하여 3개의 앱 창 간에 데이터를 공유합니다. 큰 창은 아이콘 편집기이며, 툴 팔레트 창과 색 팔레트 창에서 정보를 받습니다.

guide_inconeditor.m에서 함수 guide_iconeditor_OpeningFcn에는 다음 명령이 포함됩니다.

colorPalette = guide_colorpalette('iconEditor', hObject)

인수는 다음과 같습니다.

  • 'iconEditor'guide_iconEditor 창의 콜백이 함수 실행을 트리거했음을 지정합니다.

  • hObjectguide_iconEditor 창의 Figure 객체입니다.

  • colorPaletteguide_colorPalette 창의 Figure 객체입니다.

guide_iconeditor_OpeningFcn도 유사한 입력 인수와 출력 인수로 guide_toolpalette 함수를 호출합니다.

이러한 함수 간에 Figure 객체를 전달하면 guide_iconEditor 창에서 다른 두 창의 handles 구조체에 액세스할 수 있습니다. 마찬가지로, 다른 두 창에서도 guide_iconEditor 창의 handles 구조체에 액세스할 수 있습니다.

GUIDE로 생성한 콜백 이름 바꾸기 및 제거하기

콜백 이름 바꾸기

GUIDE는 컴포넌트의 Tag 속성과 콜백 속성 이름을 결합하여 콜백 함수의 이름을 만듭니다. 컴포넌트의 Tag 값을 변경하면 다음에 UI를 저장할 때 GUIDE가 콜백 이름을 변경합니다.

UI를 저장한 후 Tag 값을 변경하면 GUIDE는 모든 컴포넌트가 고유한 Tag 값을 갖는다고 가정하고 다음 항목을 업데이트합니다.

  • 컴포넌트의 콜백 함수 정의

  • 컴포넌트의 콜백 속성값

  • handles 구조체의 해당 필드에 대한 코드 파일의 참조

컴포넌트의 Tag 속성을 변경하지 않고 콜백 함수 이름을 바꾸려면 다음 단계를 수행하십시오.

  1. 콜백 함수 정의에서 이름을 변경합니다.

  2. 익명 함수로 전달되는 첫 번째 인수를 변경하여 컴포넌트의 콜백 속성을 업데이트합니다. 예를 들어, 누름 버튼의 원래 콜백 속성은 다음과 같이 표시될 수 있습니다.

    @(hObject,eventdata)myui('pushbutton1_Callback',...
                               hObject,eventdata,guidata(hObject))

    이 예제에서는 'pushbutton1_Callback'을 새 함수 이름으로 변경해야 합니다.

  3. 코드 파일에서 기존 함수 이름에 대한 다른 모든 참조를 새 함수 이름에 대한 것으로 변경합니다.

콜백 삭제하기

최종 사용자가 특정 동작을 수행할 때 실행되는 함수를 제거하거나 변경하려면 콜백 함수를 삭제하면 됩니다. 콜백 함수를 삭제하려면 다음 단계를 수행하십시오.

  1. 코드에서 콜백 함수를 참조하는 모든 인스턴스를 검색하여 바꿉니다.

  2. GUIDE에서 UI를 열고 속성 인스펙터에서 콜백 함수를 참조하는 모든 인스턴스를 바꿉니다.

  3. 콜백 함수를 삭제합니다.

관련 항목