주요 콘텐츠

GUIDE 마이그레이션 전략

MATLAB®에서 앱을 개발하기 위한 원래의 끌어서 놓기 환경인 GUIDE는 R2025a에서 제거되었습니다. 기존 GUIDE 앱을 계속 실행할 수 있으며, 앱 동작을 변경해야 하는 경우 앱 프로그램 파일을 계속 편집할 수 있습니다.

기존 GUIDE 앱을 계속 사용하고 향후 MATLAB 릴리스와의 호환성을 유지하려면 아래 표에 나열된 권장 사항 중 하나를 사용하십시오.

앱 개발 요구 사항권장 사항세부 정보
개발 작업이 지속적임앱을 앱 디자이너로 마이그레이션합니다.GUIDE 앱을 앱 디자이너로 마이그레이션하기
편집이 간헐적임GUIDE가 만든 기존 앱 코드 파일을 사용하여 앱을 편집합니다.GUIDE 앱 코드 파일 편집하기
실행만 필요함GUIDE 앱을 계속 실행합니다.기존 GUIDE 앱을 실행하려면 앱과 연결된 앱 코드 파일을 실행하십시오.

또는 GUIDE 앱을 단일 MATLAB 파일로 내보낼 수도 있습니다. 하지만 내보낸 앱은 향후 앱 디자이너로 마이그레이션할 수 없습니다. 자세한 내용은 GUIDE 앱을 MATLAB 파일로 내보내기 항목을 참조하십시오.

GUIDE 앱을 앱 디자이너로 마이그레이션하기

참고

이 기능을 사용하려면 GUIDE to App Designer Migration Tool for MATLAB이 필요합니다.

GUIDE 앱을 앱 디자이너로 마이그레이션하면 앱의 레이아웃을 대화형 방식으로 계속 개발할 수 있습니다. 또한 향상된 UI 컴포넌트 집합 및 자동 재배치 옵션과 같은 기능을 활용하여 앱이 화면 크기의 변화에 반응하도록 할 수 있습니다. 앱을 만들어 웹 앱으로 공유할 수도 있습니다(MATLAB Compiler™ 필요).

이 옵션은 상당한 또는 지속적인 기능 개발을 필요로 하는 GUIDE 앱에 사용하십시오. GUIDE 앱을 마이그레이션하려면 먼저 GUIDE to App Designer Migration Tool for MATLAB을 다운로드하십시오.

앱을 마이그레이션하는 방법은 여러 가지 있습니다.

  • 앱 디자이너에서 앱을 열고 디자이너 탭으로 이동합니다. 파일 섹션에서 열기 > GUIDE to App Designer Migration Tool 열기를 클릭합니다.

  • MATLAB 명령 창에서 appmigration.migrateGUIDEApp 함수를 호출합니다. 이 함수를 사용하여 여러 GUIDE 앱을 일괄 처리로 마이그레이션할 수 있습니다.

마이그레이션 툴의 기능

마이그레이션 툴은 GUIDE FIG 파일을 읽어 들인 후 상응하는 앱 디자이너 컴포넌트 및 레이아웃을 자동으로 MLAPP 파일로 생성하여 앱을 변환할 수 있게 도와줍니다. GUIDE 콜백 코드와 다른 사용자 정의 함수는 MLAPP 파일로 복사됩니다. 이 반자동적인 코드 변환 단계에서는 수동 코드 업데이트가 필요한 경우 이에 대한 조치를 제안하는 마이그레이션 리포트도 생성해 줍니다. 다음 표에는 툴의 일부 기능이 설명되어 있습니다.

마이그레이션 툴 기능설명
파일 변환GUIDE FIG 파일 및 관련 코드를 읽어 들인 후 앱 디자이너 MLAPP 파일을 생성합니다. 앱 디자이너 파일 이름의 형식은 guideFileName_App.mlapp입니다.
컴포넌트 및 앱 레이아웃

컴포넌트와 속성 구성을 이에 상응하는 앱 디자이너 컴포넌트 및 속성 구성으로 변환하고 앱의 레이아웃을 보존합니다.

A GUIDE app and an App Designer app to calculate mass. The layout and functionality of each app is the same. There are minor visual differences, such as the color of the buttons.

콜백 코드GUIDE 콜백 코드 및 사용자 정의 함수의 복사본을 MLAPP 파일에 보존합니다.
튜토리얼마이그레이션된 앱에 대한 변경 사항을 순차적으로 확인합니다.
마이그레이션 리포트마이그레이션 툴을 통해 성공적으로 완료된 작업을 요약합니다. 앱과 관련한 제한 사항 또는 지원되지 않는 기능을 나열하고 제안된 조치가 있는 경우 이를 표시합니다.

콜백 코드

GUIDE 스타일의 콜백 코드가 사용자 앱의 앱 디자이너 UI 컴포넌트와 호환되도록 하기 위해 마이그레이션 툴은 convertToGUIDECallbackArguments라는 함수를 사용합니다. 이 함수는 앱 디자이너 콜백 인수를 사용자 코드에 필요한 GUIDE 스타일의 콜백 인수로 변환합니다. convertToGUIDECallbackArguments 함수는 마이그레이션된 각 콜백 함수의 시작 부분에 추가됩니다. 이 함수는 앱 디자이너 콜백 인수 appevent를 받고 GUIDE 스타일의 콜백 인수 hObject, eventdata, handles를 반환합니다. 예를 들면 다음과 같습니다.

Example of a call to the convertToGUIDECallbackArguments function inside an App Designer callback

GUIDE 스타일의 콜백 인수는 각각 다른 용도로 사용됩니다.

  • hObject는 콜백이 실행되고 있는 객체의 핸들입니다. GUIDE 앱의 컴포넌트 UIControl 객체 또는 ButtonGroup 객체의 경우 hObjectUIControlPropertiesConverter 객체 또는 ButtonGroupPropertiesConverter 객체에 대한 핸들입니다. 이러한 객체는 GUIDE 스타일의 코드가 앱 디자이너 콜백 함수에서 작동하도록 하기 위해 생성되었습니다.

  • eventdata는 대개 비어 있지만 콜백 이벤트에 대한 특정 정보를 포함하는 구조체일 수 있습니다.

  • handles는 UI Figure의 마이그레이션된 자식 컴포넌트를 포함하는 구조체입니다. 이들 자식 컴포넌트는 'Tag' 속성값 집합을 가집니다. GUIDE 앱의 자식 컴포넌트 UIControl 객체는 마이그레이션된 앱에서 UIControlPropertiesConverter 객체에 해당합니다. 마찬가지로, 자식 ButtonGroup 객체는 마이그레이션된 앱에서 ButtonGroupPropertiesConverter 객체에 해당합니다.

UIControlPropertiesConverter 객체 및 ButtonGroupPropertiesConverter 객체는 GUIDE 스타일의 코드와 앱 디자이너 컴포넌트 및 콜백 사이에서 어댑터처럼 동작합니다. UIControlPropertiesConverter 객체는 GUIDE 앱의 각 컴포넌트 UIControl 객체에 대해 생성됩니다. 이러한 converter 객체는 마이그레이션된 앱에서 앱 디자이너 UI 컴포넌트와 연결됩니다. converter 객체는 GUIDE 앱의 원래 UIControl과 동일한 속성, 동일한 값을 가지지만 연결된 앱 디자이너 UI 컴포넌트에 이러한 속성과 값을 적용합니다.

마찬가지로, GUIDE의 ButtonGroup 객체에 대해서는 ButtonGroupPropertiesConverter 객체가 앱 디자이너에 생성됩니다. 이 객체를 사용하면 SelectedObject 속성을 UIControlPropertiesConverter 객체로 설정하여 버튼 그룹 SelectionChangedFcn 콜백 논리가 작동하도록 할 수 있습니다.

특별 고려 사항

경우에 따라, 앱을 마이그레이션하기 전이나 후에 추가 단계를 수행해야 합니다. 다음 표에는 추가 단계나 수동 코드 업데이트가 필요한 일반 시나리오 및 코딩 패턴이 나와 있습니다. 이는 모든 것이 포함된 종합적인 목록이 아닙니다.

GUIDE 앱 특징설명제안된 조치
다중 창 앱(즉, 데이터를 공유하는 두 개 이상의 앱)다중 창 앱에서는 각 앱을 개별적으로 마이그레이션해야 합니다. 마이그레이션된 앱 파일 이름의 끝에는 _App이 추가됩니다. 다른 앱에서 이러한 앱 호출 시 업데이트가 필요합니다.

각 앱을 개별적으로 마이그레이션합니다. 호출하는 앱에서 호출되는 앱의 이름을 새 파일 이름으로 업데이트합니다.

또는 appmigration.migrateGUIDEApp 함수를 사용하여 단일 명령으로 다중 창 앱을 마이그레이션합니다. 이 함수는 명령으로 성공적으로 마이그레이션된 모든 앱에 대한 호출을 업데이트합니다.

라디오 버튼 및 라디오 버튼 콜백

마이그레이션 툴은 라디오 버튼 그룹을 부모로 갖지 않는 라디오 버튼이나 개별 라디오 버튼에 대한 콜백 함수를 마이그레이션하지 않습니다.

앱 디자이너에서 버튼 그룹을 만들어 이 버튼 그룹에 라디오 버튼을 추가합니다. 라디오 버튼 선택이 변경될 경우 동작을 실행하려면 해당 버튼 그룹에 대한 SelectionChangedFcn 콜백 함수를 생성하십시오. 자세한 내용은 uiradiobuttonButtonGroup 항목을 참조하십시오.
ButtonDownFcn, KeyPressFcnKeyReleaseFcn 콜백앱 디자이너에 동등한 콜백이 없으므로 마이그레이션 툴은 UIControl 객체에 대한 버튼 누름 및 키 누름 콜백을 마이그레이션하지 않습니다.

앱을 마이그레이션한 후 컴포넌트를 기반으로 새 콜백을 만들어 동작을 복제하도록 코드를 업데이트합니다. 예를 들어, 앱에 편집 필드가 있는 경우 해당 컴포넌트에 대해 앱 사용자가 편집 필드에 입력할 때마다 실행되는 ValueChangingFcn 콜백을 만듭니다.

컴포넌트에 상응하는 기능의 콜백이 없는 경우에는 UI Figure에 대한 WindowButtonDownFcn, WindowKeyPressFcn 또는 WindowKeyReleaseFcn 콜백을 대신 만듭니다. 그런 다음 CurrentObject 속성을 사용하여 마지막으로 클릭한 객체를 쿼리할 수 있습니다. 예를 들어, 앱에 listbox1이라는 목록 상자에 대한 ButtonDownFcn 콜백이 있는 경우 먼저 앱 디자이너에서 app.figure1 객체에 대한 WindowButtonDownFcn 콜백을 만듭니다. 그런 다음, 이 코드를 콜백 함수에 추가합니다.

function figure1WindowButtonDown(app,event)
    if app.figure1.CurrentObject == app.listbox1
        % Execute callback code
    end
end
메뉴 모음과 도구 모음앱 디자이너에서는 디폴트 Figure 메뉴 모음과 도구 모음이 지원되지 않습니다.

앱 디자이너 컴포넌트 라이브러리의 메뉴 모음도구 모음 컴포넌트를 사용하여 사용자 지정 메뉴 모음과 도구 모음을 만듭니다.

앱이 디폴트 메뉴 모음과 도구 모음에 의존하는 경우 앱 디자이너 앱의 StartupFcn 콜백에서 Figure MenuBar 또는 ToolBar 속성을 "figure"로 설정할 수 있습니다.

uistack앱 디자이너로 마이그레이션된 GUIDE 스타일 객체에서는 이 함수를 호출할 수 없습니다.앱 디자이너 컴포넌트를 사용하도록 코드를 업데이트합니다. 그런 다음, 이러한 객체에 대해 uistack 함수를 호출할 수 있습니다. 자세한 내용은 마이그레이션된 앱의 콜백 코드 업데이트하기 항목을 참조하십시오.
findobj, findall, gcbo

findobj, findall 또는 gcbo를 사용하여 컴포넌트를 참조하거나 속성을 설정하면 오류가 발생할 수 있습니다. UIControl 객체는 상응하는 앱 디자이너 UI 컴포넌트로 마이그레이션됩니다. 이 마이그레이션된 컴포넌트에 대한 속성에 액세스하거나 설정하려면 UIControlPropertiesConverter 객체에 대해 이를 설정해야 합니다. 또는 연결된 앱 디자이너 컴포넌트, 속성, 값을 사용하도록 코드를 업데이트할 수 있습니다.

handles 구조체를 대신 사용하여 컴포넌트를 참조하거나 연결된 앱 디자이너 컴포넌트, 속성, 값을 사용하도록 코드를 업데이트합니다.
narginnargchk헬퍼 함수는 앱 메서드로 마이그레이션되고 추가 입력 인수로 app을 가집니다. 이로 인해 nargin 또는 nargchk 논리가 잘못될 수 있습니다.검사 값을 1씩 증분시킵니다.
OutputFcn(varargout)Figure 출력값

앱 디자이너에는 이에 상응하는 기능이 없습니다.

마이그레이션된, 앱 디자이너로 만든 앱을 인스턴스화할 경우 출력값은 Figure 객체가 아니라 항상 앱 객체입니다.

OutputFcn 함수에 앱에 중요한 초기화 코드가 포함된 경우 대신 OpeningFcn의 끝부분에 이 초기화 코드를 추가합니다.

앱을 인스턴스화할 때 OutputFcn 함수가 작업 공간에 할당될 출력값(예: Figure 객체)을 지정하는 경우, 앱을 인스턴스화하는 함수를 생성해야 합니다. 예를 들어, 다음과 같이 합니다.

function out = MyGUIDEApp(varargin)
    app = MyMigratedApp(varargin{:});
    out = app.UIFigure;            
end

GUIDE 앱이 actxcontrol과 같은 함수를 사용하여 타사 컴포넌트를 통합하는 경우 Recommendations for MATLAB Apps Using Java and ActiveX를 참조하십시오.

GUIDE 코드와 앱 디자이너 코드의 차이점

앱 디자이너와 GUIDE는 코드 구조 및 콜백 구문이 다르며, UI 컴포넌트에 액세스하고 데이터를 공유하는 기법이 서로 다릅니다. 이러한 차이점을 이해하면 앱 디자이너의 새로운 기능을 마이그레이션된 앱에 추가하거나 앱 디자이너 코드 스타일 및 규칙을 사용하도록 앱을 업데이트하려는 경우에 유용합니다. 다음 표에는 이러한 차이점 중 일부가 요약되어 있습니다.

차이점GUIDE 앱 디자이너추가 정보
Figure와 그래픽스 사용

GUIDE는 figure 함수를 호출하여 앱 창을 만듭니다.

GUIDE는 axes 함수를 호출하여 플롯을 표시할 좌표축을 만듭니다.

모든 MATLAB 그래픽스 함수가 지원됩니다. 대상 좌표축을 지정할 필요가 없습니다.

앱 디자이너는 uifigure 함수를 호출하여 앱 창을 만듭니다.

앱 디자이너는 uiaxes 함수를 호출하여 플롯을 표시할 좌표축을 만듭니다.

대부분의 MATLAB 그래픽스 함수가 지원됩니다.

앱 디자이너에서 그래픽스 표시하기
컴포넌트 사용

GUIDE는 uicontrol 함수로 대부분의 컴포넌트를 만듭니다. 사용 가능한 컴포넌트가 더 적습니다.

앱 디자이너는 고유한 전용 함수로 각 UI 컴포넌트를 만듭니다. Tree, Gauge, TabGroup, DatePicker를 포함하여 사용 가능한 컴포넌트가 더 많습니다.

앱 작성 컴포넌트
Update UIControl Objects and Callbacks
컴포넌트 속성 액세스

GUIDE는 setget을 사용하여 컴포넌트 속성에 액세스하고 handles를 사용하여 컴포넌트를 지정합니다.

예:
name = get(handles.Fig,'Name')

앱 디자이너는 setget을 지원하지만 점 표기법을 사용하여 컴포넌트 속성에 액세스하는 것을 권장하며, app을 사용하여 컴포넌트를 지정합니다.

예:
name = app.UIFigure.Name

앱 디자이너에서 콜백 사용하기
앱 코드 관리

코드는 로컬 함수를 호출할 수 있는 메인 함수로 정의됩니다. 모든 코드는 편집 가능합니다.

코드는 MATLAB 클래스로 정의됩니다. 콜백, 헬퍼 함수, 사용자 지정 속성만 편집 가능합니다.

앱 디자이너 코드 보기에서 코드 관리하기
콜백 작성

GUIDE에서 생성된 콜백 함수에는 handles, hObject, eventdata의 세 가지 입력 인수가 있습니다.

예:
myCallback(hObject,eventdata,handles)

앱 디자이너에서 생성된 콜백 함수에는 app, event의 두 가지 입력 인수가 있습니다.

예:
myCallback(app,event)

앱 디자이너에서 콜백 사용하기
데이터 공유

데이터를 저장하고 이 데이터를 콜백과 함수 간에 공유하려면 UserData 속성, handles 구조체, guidata 함수, setappdata 함수 또는 getappdata 함수를 사용하십시오.

예:
handles.currSelection = selection;
guidata(hObject,handles);

데이터를 저장하고 이 데이터를 콜백과 함수 간에 공유하려면 사용자 지정 속성을 사용하여 변수를 생성하십시오.

예:
app.currSelection = selection

앱 디자이너로 만든 앱 내부에서 데이터 공유하기

마이그레이션된 앱의 콜백 코드 업데이트하기

마이그레이션된 앱은 GUIDE 스타일의 객체와 코드 규칙을 사용합니다. 앱 디자이너의 객체와 코드 규칙을 사용하도록 마이그레이션된 앱에서 콜백 코드를 업데이트하는 것이 좋습니다. 콜백 코드를 업데이트하면 최신 앱 작성 기능이 지원되고 앱을 더 쉽게 유지할 수 있습니다. 코드를 업데이트하려면 다음 단계를 따르십시오.

  1. 앱 디자이너 UI 컴포넌트 사용 — 콜백 함수에서 app 객체를 대신 사용하도록 handles 구조체에 대한 참조를 업데이트합니다. handles 구조체는 GUIDE 앱에서 UIControl 객체를 나타내는 converter 객체에 대한 액세스를 제공하는 반면, app 객체는 앱 디자이너 앱에서 UI 컴포넌트에 대한 액세스를 제공합니다.

    예를 들어, GUIDE 스타일의 콜백은 다음 코드를 사용하여 누름 버튼 스타일의 UIControl 객체에 대한 배경색을 설정합니다.

    handles.pushbutton1.BackgroundColor = 'red';

    다음 코드를 업데이트하여 버튼 UI 컴포넌트의 배경색을 직접 설정합니다.

    app.pushbutton1.BackgroundColor = 'red';

  2. UI 컴포넌트 속성 업데이트 — 콜백 코드가 설정하는 속성을 업데이트합니다. 일반적으로, UIControl 객체와 그에 상응하는 UI 컴포넌트 객체는 동일한 속성을 많이 가집니다. 하지만 속성 이름이나 속성이 받는 값 유형은 다릅니다. UIControl 및 UI 컴포넌트 객체 및 속성 간 비교를 보고 UI 컴포넌트를 사용하도록 코드를 업데이트하는 방법을 알아보려면 Update UIControl Objects and Callbacks 항목을 참조하십시오.

  3. 사용되지 않는 코드 삭제 — 콜백 함수가 hObject, eventdatahandles 인수를 더 이상 사용하지 않으면 이러한 인수를 생성하는 마이그레이션 툴이 추가한 코드 라인을 삭제합니다.

    [hObject,eventdata,handles] = convertToGUIDECallbackArguments(app,event);

앱이 errordlg 또는 warndlg와 같은 함수를 사용하여 대화 상자를 만들도록 되어 있는 경우 uialertuiconfirm과 같이 앱 작성을 위해 특별히 도입된 최신 대화 상자를 활용하도록 코드를 업데이트해 볼 수 있습니다. 자세한 내용은 대화 상자 업데이트하기 항목을 참조하십시오.

GUIDE 앱 코드 파일 편집하기

GUIDE 앱은 다음 두 파일로 구성됩니다.

  • 확장자가 .fig인 FIG 파일(레이아웃 설명과 누름 버튼, 좌표축, 패널, 메뉴 등의 컴포넌트가 포함됨).

  • 확장자가 .m인 앱 코드 파일(앱 동작을 제어하는 초기화 코드와 콜백이 포함됨).

향후 MATLAB 릴리스와의 호환성을 유지하기 위해 사소한 내용을 변경하는 등 기존 GUIDE 앱을 가끔씩만 편집해야 하는 경우 MATLAB 편집기에서 코드 파일을 편집하여 앱을 유지 관리할 수 있습니다. 이 전략을 사용하여 앱 동작과 앱 레이아웃을 모두 편집할 수 있습니다.

참고

FIG 파일을 직접 편집하지 마십시오. 직접 편집하면 예기치 않은 동작이나 오류가 발생할 수 있습니다.

컴포넌트 태그 식별하기

앱에서 컴포넌트의 모양이나 콜백을 변경하려면 먼저 컴포넌트의 Tag 속성의 값을 식별하십시오. GUIDE에서 생성된 코드는 이 속성의 값을 사용하여 컴포넌트에 액세스합니다. 예를 들어, Tag의 값이 pushbutton1인 버튼이 있는 경우 컴포넌트의 콜백 함수 이름은 pushbutton1_callback이며 handles.pushbutton1에 액세스하여 객체를 수정할 수 있습니다.

특정 컴포넌트의 Tag 값을 찾으려면 먼저 앱에 대한 Figure 객체를 반환하는 출력 인수를 지정하여 앱을 실행하십시오. 그런 다음, 아래 전략 중 하나를 사용하여 컴포넌트에 액세스합니다.

  • findobj 함수 호출 — Figure 객체를 함수에 전달하여 모든 컴포넌트와 컴포넌트의 태그 목록을 표시합니다. 식별할 컴포넌트의 속성값을 지정하여 출력값을 추가로 필터링할 수 있습니다. 예를 들어, 텍스트 "Click me"로 누름 버튼의 태그를 식별하려면 다음 코드를 사용하십시오.

    f = myGUIDEApp;
    h = findobj(f,"Style","pushbutton","-and","String","Click me")

  • Figure의 CurrentObject 속성 사용 — 먼저, 실행 중인 앱에서 컴포넌트를 클릭합니다. 그런 다음, Figure CurrentObject 속성을 쿼리합니다. 이 속성은 Figure에서 마지막으로 클릭한 객체를 반환합니다.

마지막으로, 컴포넌트 객체에 액세스한 후 점 표기법을 사용하여 Tag 속성을 쿼리합니다.

tag = h.Tag

앱 동작 편집하기

GUIDE를 사용하여 만든 앱의 컴포넌트에는 코드 파일에 관련 콜백 함수가 있습니다. 이 함수는 사용자가 앱과 상호 작용할 때 앱의 동작을 제어합니다. 앱을 유지 관리하기 위해 이러한 콜백 함수를 계속 편집할 수 있습니다.

예를 들어, 다음 함수 정의는 GUIDE로 생성한, 태그 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)

end
UI 이름이 myui인 경우 GUIDE는 Callback 속성을 다음 값으로 설정합니다.
@(hObject,eventdata)myui('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
위의 값은 함수 pushbutton1_Callback에 대한 참조 역할을 하는 익명 함수입니다. 이 익명 함수에는 4개의 입력 인수가 있습니다. 첫 번째 인수는 콜백 함수의 이름입니다. 마지막 세 인수는 GUIDE로 생성된 앱의 모든 콜백이 받아야 하는 인수입니다. GUIDE에서 생성된 콜백 함수에서 이러한 인수는 다음과 같습니다.

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

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

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

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

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

앱 레이아웃 편집하기

GUIDE를 사용하여 만든 모든 앱의 코드 파일에는 appname_OpeningFcn이라는 함수가 있습니다. 이 함수는 앱이 실행될 때 실행됩니다. 앱의 레이아웃을 편집하려면 이 함수에 코드를 추가하십시오.

예를 들어, 앱에 pushbutton1 태그가 있는 누름 버튼이 있다고 가정해 보겠습니다. 버튼의 텍스트를 변경하고 버튼의 너비를 업데이트하기 위해서 코드 파일의 OpeningFcn 콜백에 아래 코드를 추가할 수 있습니다.

btn = handles.pushbutton1;
btn.String = "Push me";
btn.Position(3) = 30;

컴포넌트를 앱에 추가하거나 앱에서 삭제할 수도 있습니다. 컴포넌트를 추가하거나 삭제할 때마다 handles 구조체를 업데이트합니다. 그런 다음, 콜백 함수의 끝에서 guidata 함수를 사용하여 구조체를 저장하는 이 코드를 추가합니다.

guidata(hObject,handles)

예를 들어, 누름 버튼을 삭제하려면 이 코드를 OpeningFcn 콜백에 추가하십시오.

delete(handles.pushbutton1)
handles = rmfield(handles,"pushbutton1");
guidata(hObject,handles);

앱에 체크박스를 추가하려면 이 코드를 OpeningFcn 콜백에 추가하십시오.

cbx = uicontrol(handles.figure1, ...
    Style="checkbox",Position=[20 10 80 20],Tag="checkbox1");
handles.checkbox1 = cbx;
guidata(hObject,handles);

콜백이 있는 컴포넌트를 추가하려면 앱에 동작을 통합하기 위해 파일에 추가 코드를 더해야 합니다. 예를 들어, 값이 변경될 때 텍스트를 표시하는 체크박스를 추가하려면 먼저 아래 코드를 OpeningFcn 콜백에 추가합니다(myui는 사용자의 앱 파일 이름으로 변경해야 함). 이 코드는 체크박스를 생성하고, 체크박스에 고유한 태그를 할당하고, 콜백 함수 checkbox1_Callback을 지정합니다.

cbx = uicontrol(handles.figure1, ...
    Style="checkbox",Position=[20 10 20 20],Tag="checkbox1", ...
    Callback=@(hObject,eventdata)myui("checkbox1_Callback",hObject,eventdata,guidata(hObject)));
handles.checkbox1 = cbx;
guidata(hObject,handles);

그런 다음, 코드 파일에 콜백 함수를 추가합니다. GUIDE 앱에서 MATLAB이 콜백에 전달하는 세 개의 입력 인수를 지정합니다.

% --- Executes on value changed in checkbox1.
function checkbox1_Callback(hObject,eventdata,handles)
% hObject    handle to checkbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
disp("Value changed")
end

GUIDE 앱을 MATLAB 파일로 내보내기

GUIDE 앱을 내보내면 GUIDE FIG 파일과 앱 코드 파일이 단일 MATLAB 프로그램 파일로 다시 생성되어 프로그래밍 방식 앱으로 변환됩니다. 대부분의 경우, 앱을 앱 디자이너로 마이그레이션하거나 GUIDE 앱 코드 파일을 편집하면 앱을 더 쉽게 장기적으로 유지 관리할 수 있습니다. 하지만 이 옵션은 단일 앱 파일로 작업하려는 경우에 유용합니다.

앱을 내보내려면 앱 디자이너에서 앱을 열고 툴스트립의 디자이너 탭으로 이동하십시오. 파일 섹션에서 열기 > GUIDE to App Designer Migration Tool 열기를 선택합니다. 대화 상자에서 단일 코드 파일로 내보내기 패널을 확장하고 앱과 연결된 FIG 파일을 선택한 다음 내보내기를 클릭합니다. MATLAB은 파일 이름에 _export가 추가된 프로그램 파일을 만듭니다. 새 파일에는 원래 콜백 코드와 앱의 생성 및 레이아웃을 처리하는 자동 생성 함수가 포함되어 있습니다. 다음은 이렇게 추가된 함수의 한 예입니다.

Generated function code to handle app creation.

참고 항목

도움말 항목