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

Перенос приложения 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 | Используя | Ссылочные компоненты с помощью handles или обновите код, чтобы использовать связанный компонент App Designer, свойства и значения. |
nargin и nargchk | Вспомогательные функции переносятся в методы приложения и имеют app в качестве дополнительного входного аргумента. Это может привести к ошибкам nargin или nargchk логика. | Приращение проверочных значений на 1. |
OutputFcn(varargout) и Figure продукция | В App Designer нет эквивалентных функций. При создании экземпляра перенесенного приложения App Designer выводом всегда является объект приложения, а не | Если ваш Если ваш function out = MyGUIDEApp(varargin) app = MyMigratedApp(varargin{:}); out = app.UIFigure; end |
Если приложение GUIDE интегрирует компоненты сторонних производителей с помощью таких функций, как actxcontrol, см. Рекомендации для приложений MATLAB с использованием Java и ActiveX.
App Designer и GUIDE имеют различные структуры кода, синтаксисы обратного вызова и методы доступа к компонентам пользовательского интерфейса и совместного использования данных. Понимание этих различий полезно, если вы планируете добавить новые функции App Designer в перенесенное приложение или хотите обновить его для использования стиля кода и условных обозначений App Designer. В этой таблице обобщены некоторые из этих различий.
| Различие | Руководство | Конструктор приложений | Дополнительные сведения |
|---|---|---|---|
| Использование рисунков и графики | GUIDE вызывает GUIDE вызывает Поддерживаются все графические функции MATLAB. Нет необходимости указывать целевые оси. | Конструктор приложений вызывает Конструктор приложений вызывает Поддерживается большинство графических функций MATLAB. | Отображение графики в App Designer |
| Использование компонентов | GUIDE создает большинство компонентов с помощью | App Designer создает каждый компонент пользовательского интерфейса с собственной выделенной функцией. Доступно больше компонентов, в том числе | Компоненты для создания приложений |
| Доступ к свойствам компонента | Использование GUIDE Например, | Конструктор приложений поддерживает Например, | Обратные вызовы записи в App Designer |
| Управление кодом приложения | Код определяется как основная функция, которая может вызывать локальные функции. Весь код доступен для редактирования. | Код определяется как класс MATLAB. Редактируются только обратные вызовы, вспомогательные функции и пользовательские свойства. | Управление кодом в представлении кода конструктора приложений |
| Запись обратных вызовов | Требуемые входные аргументы обратного вызова: Например, | Требуемые входные аргументы обратного вызова: Например, | Обратные вызовы записи в App Designer |
| Совместное использование данных | Для хранения и совместного использования данных между обратными вызовами и функциями используйте Например, | Для хранения и совместного использования данных между обратными вызовами и функциями используйте пользовательские свойства для создания переменных. | Совместное использование данных в приложениях App Designer |