exponenta event banner

РУКОВОДСТВО Стратегии миграции

В R2019b MathWorks ® объявила, что GUIDE, оригинальная среда перетаскивания для создания приложений в MATLAB ®, будет удалена в следующем выпуске. После удаления GUIDE существующие GUI-приложения продолжат работать в MATLAB, а программные файлы приложений будут по-прежнему доступны для редактирования, если потребуется изменить поведение приложения.

Чтобы продолжить редактирование макета существующего приложения GUIDE и обеспечить его совместимость с будущими версиями MATLAB, необходимо использовать одну из предложенных стратегий миграции, перечисленных в этой таблице.

Потребности в разработке приложенийСтратегия миграцииКак выполнить миграцию
Периодическое редактированиеЭкспортируйте приложение в один файл MATLAB для управления макетом и кодом приложения с помощью функций MATLAB.Откройте приложение в GUIDE и выберите File > Export to MATLAB-file. В диалоговом окне «Параметры удаления проводника» нажмите «Экспорт».
Текущие разработкиПеренесите приложение в App Designer.Откройте приложение в GUIDE и выберите File > Migrate to App Designer. В диалоговом окне «Параметры удаления проводника» нажмите «Перенести».

Экспорт приложения GUIDE в файл MATLAB

Экспорт приложения GUIDE преобразует его в программное приложение путем повторного создания GUIDE ФИГ и программных файлов вместе в одном файле программы MATLAB.

Используйте эту опцию, если планируется:

  • Внесите незначительные изменения в макет или поведение приложения.

  • Разрабатывайте приложение программно, а не интерактивно.

Чтобы экспортировать приложение, откройте его в GUIDE и выберите File > Export to MATLAB-file или щелкните правой кнопкой мыши файл FIG в браузере MATLAB Current Folder и выберите Export to MATLAB-file. Откроется диалоговое окно «Параметры удаления GUIDE». Убедитесь, что выбран правильный файл FIG, и нажмите кнопку Export. MATLAB создает файл программы с _export добавлено к имени файла. Новый файл содержит исходный код обратного вызова и автоматически сгенерированные функции, обрабатывающие создание и макет приложения. Пример этих добавленных функций показан здесь.

Перенос GUIDE App в App Designer

Перенос приложения GUIDE в App Designer позволяет продолжить разработку макета приложения в интерактивном режиме. Он также позволяет использовать такие функции, как расширенный набор компонентов пользовательского интерфейса и параметры автоматической переформатировки, чтобы ваше приложение реагировало на изменения размера экрана. Кроме того, это дает вам возможность создавать и совместно использовать приложение в качестве веб-приложения (требуется MATLAB Compiler™).

Для упрощения процесса преобразования в R2018a году впервые был выпущен документ GUIDE to App Designer Migration Tool for MATLAB. Она доступна через проводник Add-On на рабочем столе MATLAB или через файловый обмен на Central™ MATLAB.

Начиная с R2020a, средство миграции имеет значительные улучшения, которые значительно сокращают время и количество обновлений кода вручную, необходимых для запуска приложения в App Designer. Дополнительные сведения об этих расширениях см. в разделе Код обратного вызова.

Используйте этот параметр для приложений GUIDE, требующих существенной или постоянной разработки функций.

Существует несколько способов миграции приложения в зависимости от среды, в которой вы начинаете работать.

  • Откройте диалоговое окно «Параметры удаления GUIDE», открыв приложение в GUIDE и выбрав меню «Файл» > «Перенести в App Designer» или щелкнув правой кнопкой мыши файл FIG в браузере «Текущая папка MATLAB» и выбрав команду «Перенести в App Designer».

    • Если программа переноса GUIDE to App Designer еще не установлена, щелкните Установить пакет поддержки. Откроется обозреватель надстроек, в котором можно установить средство переноса. После установки инструмента снова откройте диалоговое окно «Параметры удаления проводника».

    • После установки программы переноса GUIDE to App Designer выберите правильный файл FIG и нажмите Migrate. Приложение переносится и автоматически открывается в App Designer.

  • В App Designer откройте любое приложение и перейдите на вкладку Конструктор. В разделе Файл щелкните Открыть > Открыть РУКОВОДСТВО для инструмента миграции App Designer.

Функции инструмента миграции

Инструмент миграции помогает преобразовать приложения, прочитав файл GUIDE FIG и автоматически сгенерировав эквивалентные компоненты и макет App Designer в файле MLAPP. Код обратного вызова GUIDE и другие пользовательские функции копируются в файл MLAPP. Это полуавтоматическое преобразование кода также создает отчет о миграции, который предлагает действия для любых необходимых обновлений кода вручную. Некоторые функции инструмента описаны в этой таблице.

Функции инструмента миграцииОписание
Преобразование файловПрочитайте файл GUIDE и связанный с ним код, а затем создайте MLAPP-файл App Designer. Имя файла App Designer принимает форму guideFileName_App.mlapp.
Компоненты и макет приложения

Преобразование компонентов и конфигураций свойств в эквиваленты App Designer и сохранение макета приложения.

Код обратного вызоваСохранение копии кода обратного вызова GUIDE и пользовательских функций в файле MLAPP.
Обучающая программаВыполните изменения, внесенные в перенесенное приложение.
Отчет о миграцииОбобщите действия, успешно выполненные средством миграции. Перечислите все ограничения или неподдерживаемые функции, специфичные для вашего приложения, с предлагаемыми действиями, если они доступны.

Код обратного вызова

Чтобы сделать код обратного вызова в стиле GUIDE совместимым с компонентами пользовательского интерфейса App Designer в приложении, средство миграции использует функцию convertToGUIDECallbackArguments. Эта функция преобразует аргументы обратного вызова App Designer в аргументы обратного вызова в стиле GUIDE, требуемые кодом. convertToGUIDECallbackArguments добавляется к началу каждой перенесенной функции обратного вызова. Требуются аргументы обратного вызова App Designer app и event и возвращает аргументы обратного вызова в стиле GUIDE hObject, eventdata, и handles. Например:

hObject - дескриптор объекта, обратный вызов которого выполняется. Для компонентов из вашего приложения GUIDE, которые были UIControl или ButtonGroup объекты, hObject является дескриптором для UIControlPropertiesConverter или ButtonGroupPropertiesConverter объект. Эти объекты создаются для того, чтобы код в стиле GUIDE работал в функциях обратного вызова App Designer.

eventdata обычно пуст, но может быть структурой, содержащей конкретную информацию о событии обратного вызова.

handles - структура, содержащая перенесенные дочерние компоненты фигуры пользовательского интерфейса, имеющие 'Tag' набор значений свойства. Дочерние компоненты, которые были UIControl объекты в приложении GUIDE: UIControlPropertiesConverter объекты в перенесенном приложении. Аналогично, дочерние ButtonGroup объекты являются ButtonGroupPropertiesConverter объектов в перенесенном приложении.

UIControlPropertiesConverter и ButtonGroupPropertiesConverter объекты действуют как адаптеры между кодом в стиле GUIDE и компонентами App Designer и обратными вызовами. A UIControlPropertiesConverter создается для каждого компонента в приложении GUIDE, который был UIControl объект. Эти объекты конвертера связаны с компонентом пользовательского интерфейса App Designer в переносимом приложении. Объект конвертера имеет те же свойства и значения, что и исходный UIControl из вашего приложения GUIDE, но оно применяет их к связанному с ним компоненту пользовательского интерфейса App Designer.

Аналогично, для ButtonGroup объекты из GUIDE, a ButtonGroupPropertiesConverter создается в App Designer. Этот объект позволяет установить SelectedObject к свойству UIControlPropertiesConverter объект таким образом, чтобы группа кнопок SelectionChangedFcn будет функционировать логика обратного вызова.

Особые соображения

Некоторые обстоятельства требуют выполнения дополнительных шагов до или после переноса приложения. В этой таблице перечислены распространенные сценарии и шаблоны кодирования, требующие дополнительных шагов или обновления кода вручную. Это не является исчерпывающим перечнем.

Функция приложения GUIDEОписаниеПредлагаемые действия
Многопоконные приложения (то есть два или более приложений, которые совместно используют данные)Многооконные приложения требуют, чтобы каждое приложение переносилось отдельно. Перенесенные имена файлов приложений добавляются с помощью _App. Вызовы этих приложений из других приложений должны быть обновлены.Переносите каждое приложение отдельно. В вызывающем приложении обновите имя вызываемого приложения до нового имени файла.
Обратные вызовы переключателей и переключателей

Инструмент миграции не переносит переключатели, которые не являются родительскими для группы переключателей, или функции обратного вызова для отдельных переключателей.

Создайте группу кнопок в App Designer и добавьте к ней переключатели. Чтобы выполнить поведение при изменении выбора переключателя, создайте SelectionChangedFcn функция обратного вызова для группы кнопок. Дополнительные сведения см. в разделе uiradiobutton и свойства ButureGroup.
gco, movie, uistack, и clf с 'reset' аргумент Вызов этих функций в App Designer не поддерживается.Перед миграцией определите, является ли эта функция критически важной для вашего приложения. В App Designer нет обходного пути.
findobj, findall, и gcbo

Используя findobj, findall, или gcbo ссылка на компоненты и задание свойств может привести к ошибке. UIControl объекты переносятся в эквивалентный компонент пользовательского интерфейса App Designer. Чтобы получить доступ и задать свойства для этих перенесенных компонентов, необходимо установить их на UIControlPropertiesConverter объекты. Также можно обновить код, чтобы использовать связанный с ним компонент App Designer, свойства и значения.

Ссылочные компоненты с помощью handles или обновите код, чтобы использовать связанный компонент App Designer, свойства и значения.
nargin и nargchkВспомогательные функции переносятся в методы приложения и имеют app в качестве дополнительного входного аргумента. Это может привести к ошибкам nargin или nargchk логика.Приращение проверочных значений на 1.
OutputFcn(varargout) и Figure продукция

В App Designer нет эквивалентных функций.

При создании экземпляра перенесенного приложения App Designer выводом всегда является объект приложения, а не Figure объект.

Если ваш OutputFcn функция включает код инициализации, критически важный для вашего приложения, а затем добавляет его в конец OpeningFcn вместо этого.

Если ваш OutputFcn функция определяет вывод, который будет назначен рабочей области при создании экземпляра приложения, например, Figure затем необходимо создать функцию, создающую экземпляр приложения. Например:

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

Если приложение GUIDE интегрирует компоненты сторонних производителей с помощью таких функций, как actxcontrol, см. Рекомендации для приложений MATLAB с использованием Java и ActiveX.

Средства добавления новых функций или полного внедрения стиля кода App Designer

App Designer и GUIDE имеют различные структуры кода, синтаксисы обратного вызова и методы доступа к компонентам пользовательского интерфейса и совместного использования данных. Понимание этих различий полезно, если вы планируете добавить новые функции App Designer в перенесенное приложение или хотите обновить его для использования стиля кода и условных обозначений App Designer. В этой таблице обобщены некоторые из этих различий.

РазличиеРуководство Конструктор приложенийДополнительные сведения
Использование рисунков и графики

GUIDE вызывает figure для создания окна приложения.

GUIDE вызывает axes для создания осей для отображения графиков.

Поддерживаются все графические функции MATLAB. Нет необходимости указывать целевые оси.

Конструктор приложений вызывает uifigure для создания окна приложения.

Конструктор приложений вызывает uiaxes для создания осей для отображения графиков.

Поддерживается большинство графических функций MATLAB.

Отображение графики в App Designer
Использование компонентов

GUIDE создает большинство компонентов с помощью uicontrol функция. Доступно меньше компонентов.

App Designer создает каждый компонент пользовательского интерфейса с собственной выделенной функцией. Доступно больше компонентов, в том числе Tree, Gauge, TabGroup, и DatePicker.

Компоненты для создания приложений
Доступ к свойствам компонента

Использование GUIDE set и get для доступа к свойствам компонентов и использует handles для указания компонента.

Например,
name = get(handles.Fig,'Name')

Конструктор приложений поддерживает set и get, но поощряет использование точечной нотации для доступа к свойствам компонентов и использует app для указания компонента.

Например,
name = app.UIFigure.Name

Обратные вызовы записи в App Designer
Управление кодом приложения

Код определяется как основная функция, которая может вызывать локальные функции. Весь код доступен для редактирования.

Код определяется как класс MATLAB. Редактируются только обратные вызовы, вспомогательные функции и пользовательские свойства.

Управление кодом в представлении кода конструктора приложений
Запись обратных вызовов

Требуемые входные аргументы обратного вызова: handles, hObject, и eventdata.

Например,
myCallback(hObject,evendata,handles)

Требуемые входные аргументы обратного вызова: app и event.

Например,
myCallback(app,event)

Обратные вызовы записи в App Designer
Совместное использование данных

Для хранения и совместного использования данных между обратными вызовами и функциями используйте UserData свойство, handles структура или guidata, setappdata, или getappdata функция.

Например,
handles.currSelection = selection;
guidata(hObject,handles);

Для хранения и совместного использования данных между обратными вызовами и функциями используйте пользовательские свойства для создания переменных.

Например,
app.currSelection = selection

Совместное использование данных в приложениях App Designer

Связанные темы