Стратегии миграции GUIDE

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

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

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

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

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

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

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

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

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

Переместите приложение GUIDE на App Designer

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

GUIDE к Инструменту Миграции App Designer для MATLAB был сначала выпущен в R2018a, чтобы упростить процесс преобразования. Это доступно через Add-On Explorer в рабочем столе MATLAB или посредством Обмена файлами на MATLAB Central™.

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

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

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

  • От диалогового окна Быстрого запуска GUIDE кликните по вкладке Open Existing GUI. Затем выберите файл FIG и нажмите Migrate to App Designer. Это открывает GUIDE для Инструмента Миграции App Designer, если это уже установлено. Если это уже не установлено, диалоговое окно предлагает вам загружать и устанавливать его сначала. В инструменте миграции проверьте, что правильный файл FIG выбран для миграции, и затем нажмите Migrate. Приложение мигрирует и автоматически открывается в App Designer.

  • Из App Designer перейдите к вкладке Designer. В разделе File нажмите Open> Open GUIDE to App Designer Migration Tool.

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

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

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

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

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

Код коллбэка

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

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

eventdata обычно пусто, но может быть структура, содержащая определенную информацию о событии коллбэка.

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

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

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

Специальные замечания

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

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

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

Создайте группу кнопок в App Designer и добавьте переключатели в него. Чтобы выполнить поведение, когда выбор переключателя будет изменен, создайте SelectionChangedFcn функция обратного вызова для группы кнопок. Для получения дополнительной информации смотрите uiradiobutton и свойства ButtonGroup.
Неподдерживаемые свойства и функции построения графика в UIAxes объекты

Инструмент миграции преобразует Axes объекты к UIAxes объекты. Однако существуют некоторые свойства и функции построения графика что UIAxes объекты не поддерживают.

Для получения дополнительной информации смотрите Графику Отображения в App Designer.

Замените UIAxes с Axes. Например, в вашем OpeningFcn функция:

  • Найдите вызов guidata(hObject, handles). Если это не существует, создайте его.

  • После вызова convertToGUIDECallbackArguments, и перед вызовом guidata, вызовите соответствующую функцию axes. Установите Units свойство осей к 'pixels' и набор любые другие свойства.

  • Добавьте оси в handles структура.

    Например:

    % Create GUIDE-style callback args - Added by Migration Tool
    [hObject, eventdata, handles] = convertToGUIDECallbackArguments(app); %#ok<ASGLU>
    
    handles.Plot_AX = axes(app.MainFig,'Units','pixels','Position',[73 17 324 316]);
                         
    % Update handles structure
    guidata(hObject, handles);
  • Удалите UIAxes из приложения.

clfgcogetframeginputgtextфильм, и uistackВызывание этих функций в App Designer не поддержано.Определите, очень важна ли эта функциональность для вашего приложения перед миграцией. В App Designer нет никакого обходного решения.
findobjfindall, и gcbo

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

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

В App Designer нет никакой эквивалентной функциональности.

Когда вы инстанцируете перемещенного, приложения App Designer, выход всегда является объектом приложения, не Figure объект.

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

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

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

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

Средства для того, чтобы добавить новые опции или полностью принять стиль кода App Designer

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

РазличиеGUIDE Дизайнер приложенийБольше информации
Используя фигуры и графику

GUIDE вызывает figure функция, чтобы создать окно приложения.

GUIDE вызывает axes функция, чтобы создать оси для отображения графиков.

Все функции графики MATLAB поддерживаются. Нет никакой потребности задать целевые оси.

App Designer вызывает uifigure функция, чтобы создать окно приложения.

App Designer вызывает uiaxes функция, чтобы создать оси для отображения графиков.

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

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

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

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

Компоненты App Building
Доступ к свойствам компонентов

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

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

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

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

Запись обратных вызовов в App Designer
Код приложения управления

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

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

Код управления в представлении кода App Designer
Запись коллбэков

Необходимыми входными параметрами коллбэка является handles, hObject, и eventdata.

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

Необходимыми входными параметрами коллбэка является app и event.

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

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

Чтобы сохранить и осуществлять обмен данными между коллбэками и функциями, используйте UserData свойство, handles структура или guidatasetappdata, или getappdata функция.

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

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

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

Осуществляйте обмен данными в рамках приложений App Designer

Похожие темы

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