이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

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 구성요소에 대해서는 콜백 함수를 자동으로 생성하지 않습니다. 이러한 구성요소에서 콜백 함수를 실행하도록 하려면 레이아웃에서 구성요소를 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴의 콜백 보기(View Callbacks) 아래에서 항목을 선택하여 콜백을 만들어야 합니다.

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로 생성한 콜백 이름 바꾸기 및 제거하기

콜백 이름 바꾸기

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. 콜백 함수를 삭제합니다.

관련 항목