Как в matlab хранятся приложения с gui
Графические объекты. Графические приложения содержат меню, кнопки, области ввода текста, переключатели, графики.
Указатель на объект. Элементы, из которых состоят графические приложения, являются объектами. Указатель это переменная, в которой хранится адрес (в памяти компьютера) объекта. Пользователь пользуется указателями, как переменными. То есть для совершения действия над элементом графики, пользователь в соответствующей команде указывает имя переменной, означающей данный элемент графики (указатель на данный графический элемент).
Для получения указателей есть функции: gcf возвращает указатель в графическое окно, gca возвращает указатель на оси координат, gco возвращает указатель на графический объект.
Свойства графических объектов. Для установки свойств объектов есть функция set(указатель_на_объект, ‘изменяемое_свойство’, ‘его_новое_значение’, ‘изменяемое_свойство_2’, ‘его_новое_значение_2’).
Для получения свойств объекта есть функция get(указатель_на_объект, ‘свойство’).
Создание программ с визуальным интерфейсом. В окне Command Window следует набрать guide и тогда откроется окно для создания визуального интерфейса.
В нем можно выбрать как уже существующие (Open Existing GUI) так и создание нового интерфейса. Для этого предлагаются несколько наиболее распространенных типовых заготовок, а также возможность создать вообще сначала весь интерфейс (Blank GUI Default).
Для редактирования свойств элементов интерфейса, определенный элемент дважды щелкнуть мышкой (левой кнопкой). Откроется редактор свойств (Property Inspector). В нем например имя элемента (под которым он фигурирует в компьютере) называется Tag. Найдя слово Tag в левой колонке, в правой увидим само имя (например text1). Надпись на элементе, которая видна в окне интерфейса, называется String. Найдя в левой колонке слово String, в правой ему соответствует сама надпись (например argument x).
Файл интерфейса имеет расширение .fig.
Подготовка М-файла, соответствующего созданному интерфейсу.
Для того, чтобы интерфейс был связан с выполнением требуемых действий (например, при нажатии на кнопку Calculate происходило бы вычисление функций и вывод их значений в соответствующих окошках) необходимо предварительно описать в М-файле все, что требуется сделать.
М-файл появится на экране после нажатия на соответствующую (четвертую справа) кнопку в ряду кнопок вверху экрана редактора интерфейса. В М-файле, имеющем то же самое название, как и файл интерфейса, уже автоматически сгенерирован текст в соответствии с выбранными пользователем элементами интерфейса. Каждому элементу интерфейса соответствует абзац текста, начинающийся с упоминания названия (Tag) элемента интерфейса.
Поскольку целесообразно начать с описания действий, выполняемых после нажатия на кнопку Calculate, то рассмотрим абзац текста в М-файле, описывающий их. Для этого в файле интерфейса щелкнем кнопку Calculate, открыв Property Inspector, и найдем Tag этой кнопки. Пусть, например, он оказался pushbutton1. Тогда в М-файле найдем абзац, озаглавленный function pushbutton1_Callback(hObject, eventdata, handles)
В этом абзаце (то есть ниже строки его заголовка) укажем что должно произойти после ее нажатия.
Должна быть вызвана функция ввода аргументов, считывающая из соответствующих текстовых окошек исходные аргументы и возвращающая вектор (массив) аргументов. Затем должна быть вызвана функция, решающая задачу вычисления значений-результатов. Она получает вектор значений аргументов и возвращает вектор значений результатов. После этого должна быть вызвана функция для вывода в соответствующие окошки интерфейса значений из вектора результатов.
Упомянутые функции должны быть описаны. Рекомендуется описывать функции выше того места программы, где они вызываются.
Команда x=str2double(get(handles.edit1,'String')); означает что в переменную x будет записано число, возвращаемое функцией str2double которая преобразует строку цифр в число. Аргумент этой функции это возвращаемое значение функции get(handles.edit1,'String')); которая обращается к элементу интерфейса handles.edit1 где handles означает обращение к визуальному интерфейсу, edit1 это обозначение конкретного элемента интерфейса.
Команда S=sprintf('%g',f1); означает что в переменную S будет записана строка символов оператором sprintf('%g',f1); который обращается к аргументу f1 и '%g' указывает что аргумент является вещественным числом.
Команда set(handles.edit4,'String',S); означает что в элемент интерфейса edit4 (окошко вывода текста) будет выведена строка символов содержащаяся в переменной S.
Построение графика. Для построения графика предназначена кнопка интерфейса Plot. Логика построения графика такова. Пользователь вводит в окошки ввода значения переменных NumFun (номер функции 1, 2 или 3), NumArg (номер аргумента), MinArg (минимальное значение аргумента, с него начинаются подписи к горизонтальной оси), MaxArg (максимальное значение аргумента, до него идут подписи к горизонтальной оси), StepArg (шаг изменения аргумента). Затем пользователь нажимает кнопку Plot и происходит построение графика в соответствии с введенными данными.
В М-файле опишем соответствующий этой кнопке абзац текста. После нажатия на кнопку вызывается функция VvodArg, считывающая исходные аргументы и возвращающая вектор их значений. Потом вызывается функция PostrGraf. Ей передается вектор аргументов. Она строит график. Для построения графика функция PostrGraf считывает из окошек текстового ввода интерфейса соответствующие переменные. Затем подсчитывает число шагов, вычитая минимальное значение из максимального и деля на величину шага. При этом команда round округляет до целого значения результат деления. NumberSteps=round((MaxArg-MinArg)/StepArg); после этого для каждого элемента массива горизонтальных координат horis точек графика и для каждого элемента массива вертикальных координат vert точек графика определяются значения. Когда все готово, то команда plot строит график и затем на график накладывается координатная сетка.
Вычислить и сохранить результаты. Для того, чтобы вычислить результаты и сразу же сохранить их в файл, предназначена кнопка Calculate & Save.
В соответствующем этой кнопке тексте программы, происходит открытие файла
[f,p]=uiputfile('Путь к файлу\Имя файла.расширение', 'Окно выбора');
Где среди возвращаемых значений p путь, f имя файла. После получения этих возвращаемых значений функции uiputfile, следует объединить эти данные с помощью команды KudaZapisat=strcat(p,f); дальнейшие действия так же, как в ранее рассмотренных упражнениях о работе с файлами.
Построить и сохранить график. Для того, чтобы построить график и сразу же сохранить его, предназначена кнопка Plot & Save. В соответствующем этой кнопке тексте программы сначала происходит построение графика. Можно было бы просто поставить вызов функции, уже описанной выше, которая строит график. Но все же более понятно для изучения, если все переменные вычисляются здесь же. Для контроля строится и сам график.
Затем, когда все переменные, описывающие график, определены, то открываем файл. Функция uiputfile возвращает путь к файлу и имя файла. Затем их объединяем в одну переменную. Записываем в файл количество элементов массивов горизонтальных и вертикальных координат (очевидно они одинакового размера). Затем записываем сами массивы координат точек графика. Потом записываем аргументы, а также номер функции и номер аргумента, для которых построен график. Затем файл закрываем.
Открыть результаты вычислений из файла. Для открытия файла с результатами вычислений предназначена кнопка Open Data. В соответствующем ей месте программы опишем необходимые действия. Функция uigetfile подготавливает данные об открываемом файле для чтения. При этом открывается окно выбора, где определяется имя файла и путь к нему. Эти данные являются возвращаемыми значениями для функции uigetfile. Получив их, объединяем их в одну переменную OtkudaChitat. Затем открываем файл. После открытия файла, считываем интересующие нас данные из файла в переменные с соответствующими названиями. Необходимо теперь вывести значения этих переменных в соответствующие окошки текстового вывода в интерфейсе. Для этого используем функцию VivodRes и ранее не использовавшуюся функцию VivodArgumentovNaEkran, которую необходимо описать выше описания кнопки.
Открыть график и данные из файла. Открытие данных, необходимых для построения графика, из файла осуществляется кнопкой Open Data & Plot. В соответствующем ей тексте программы логика действий примерно такая же как и при открытии результатов вычислений из файла. После получения всех необходимых данных из файла, осуществляется построение графика. Кроме того, выводятся данные об исходных аргументах и, кроме того, о номере функции и номере аргумента, для которых построен график. При желании можно также доработать это упражнение и выполнить подписи к осям графика в соответствии с названиями аргументов и функций.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Изучение принципов создания графических приложений в пакете Matlab. Программирование обработчиков событий, вызываемых работой с элементами управления. Программирование событий и размещение элементов в среде Matlab. Диалоговые окна и меню приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | методичка |
Язык | русский |
Дата добавления | 25.03.2015 |
Размер файла | 339,5 K |
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
СОЗДАНИЕ ГРАФИЧЕСКИХ ПРИЛОЖЕНИЙ В СРЕДЕ MATLAB
Методические указания к лабораторной работе по дисциплине «Автоматизация инженерных вычислений» для студентов всех форм обучения направления 230100 - Информатика и вычислительная техника,
И.А. Селиванова, А.А. Букин
Екатеринбург УрФУ 2012
1. Принципы создания графических интерфейсов
Графические приложения MATLAB состоят из окон, которые содержат элементы управления в виде кнопок, списков, переключателей, флагов, полос скроллинга, полей ввода данных и вывода результатов работы, контекстных меню. Связи между окнами устанавливаются при помощи программного кода. Создание графического приложения включает следующие этапы:
1. Разработка графического интерфейса пользователя (Graphical User Interface), которая заключается в расположение элементов управления в пределах окна.
2. Программирование обработчиков событий, вызываемых работой с элементами управления.
Процесс работы над приложением представляет собой постепенное добавление функционала и отладку, завершается тестированием. Конечным результатом является программа с графическим интерфейсом пользователя, содержащаяся в нескольких файлах, запуск которой производится вводом имени программы в командной строке MATLAB.
2. Постановка задачи
Цель данной лабораторной работы - изучение основных принципов создания графических приложений в пакете MATLAB.
В процессе поэтапного выполнения данной работы необходимо разработать графическое приложение в среде MATLAB. Пример окна приложения приведён на рисунке 1. Расположение элементов может отличаться от предложенного.
Рис. 1 Окно приложения
Перейдите в интерактивную среду разработки графического интерфейса - GUIDE, выполнив команду guide в командной строке. В появившемся окне выберите пункт Blank GUI на закладке Create New GUI и нажмите ОК. Откроется окно редактора интерфейса (рис. 2).
Рис. 2 Окно редактора интерфейса
Редактор пользовательского интерфейса содержит:
* панель инструментов управления приложением;
* заготовку окна приложения с нанесенной сеткой;
* вертикальную и горизонтальную линейки;
* панель инструментов для добавления элементов интерфейса на окно приложения.
Редактор приложения MATLAB позволяет разместить различные элементы интерфейса. Для этого нажмите соответствующую кнопку на панели инструментов в левой части окна редактора интерфейса, и поместите выбранный объект на форму.
Приложение в данный момент находится в режиме редактирования. Любой объект можно удалить из окна при помощи кнопки Delete, предварительно его выделив. Запуск приложения производится при помощи кнопки Run либо выбором соответствующего пункта меню Tools. При запуске программа предложит сохранить проект. Выберите имя сохраняемого файла, например, mygui.fig, и директорию для сохранения, затем нажмите Save. Приложение запускается в отдельном окне с заголовком по умолчанию. Пользователь может обращаться к размещенным в приложении элементам управления.
3.1 Программирование событий
Графическое приложение в MATLAB хранится в двух файлах с расширениями.fig и.m, первый из них содержит описание формы окна, а второй - код программы. Добавление элемента интерфейса в редакторе приводит к автоматической генерации шаблона обработчика события (например, обработчика нажатия кнопки) в файле с кодом программы.
Создадим приложение, окно которого содержит поле вывода графических элементов (Axes), содержащее координатные оси, и две кнопки (Push Button), предназначенные для построения графика функции и очистки поля.
Разместите на форме первую кнопку и объект Axes так, как показано на рис. 3. На кнопке автоматически размещается надпись Push Button. Каждый графический элемент обладает набором свойств, определяющих его внешний вид и поведение. Имя графического элемента Tag позволяет различать элементы интерфейса. Следует дать кнопке описывающее её функционал имя.
Рис. 3 Размещение компонентов
Для этого нажмите правой кнопкой мыши на кнопке, а в открывшемся списке вызовите редактор свойств Property Inspector, либо два раза кликните левой кнопкой мыши (рис. 4).
Рис. 4 Окно Property Inspector
В открывшемся окне редакторе свойств измените значение Tag на btnPlot. Это имя впоследствии будет использоваться для доступа к свойствам кнопки при программировании. Можно заметить, что имя дано в соответствии с элементом управления и его будущей функцией (button - кнопка, Plot - строить). Аналогичным образом дайте объекту Axes имя axMain.
Когда в запущенном приложении пользователь нажимает на кнопку, то вызывается обработчик событий, имя которого формируется из имени элемента, нижнего подчеркивания и слова Callback (отзыв). Сейчас он не содержит операторов. Желательно задавать имена элементов до обращения к обработчику, чтобы не пришлось менять название генерируемой функции в дальнейшем. Чтобы вызвать обработчик, вызовите правой кнопкой мыши раскрывающийся список для btnPlot, выберите в нем View Callbacks и запустите Callback, открывшийся обработчик события измените в соответствии с листингом 1.
Обработка события кнопки с именем btnPlot.
function btnPlot_Callback(hObject, eventdata, handles)
drawPlot(x, y, handles);
Чтобы создать функцию drawPlot, в интерфейсе MATLAB выберите пункт меню File, затем в раскрывающемся списке New выберите элемент Script. Созданный файл функции оформите в соответствии с листингом 2 и сохраните в директорию с файлом mygui.m.
Функция прорисовки графика, вызываемая из btnPlot.
function drawPlot(xVector, yVector, handles)
newPlot = plot(xVector, yVector);
setappdata(handles.axMain, 'plot', newPlot);
Для функций changeMarker и changeColor создайте пустые Script файлы (заглушки). Сохраните оба файла и запустите приложение из редактора приложений. Нажатие на кнопку в запущенном приложении должно приводить к отображению графика функции в объекте axMain. Закройте окно приложения и продолжите работу в редакторе форм. Добавьте вторую кнопку с именем btnClear. Перейдите к функции обработки события второй кнопки. Оформите вызов функции plotClearDialog, как показано в листинге 4.
Обработка события кнопки с именем btnClear.
function btnClear_Callback(hObject, eventdata, handles)
Сохраните функцию plotClearDialog в одноименном Script файле, впоследствии мы ее модифицируем.
Функция очистки графика, вызывается из btnClear.
plotClearDialog.m:
function plotClearDialog(hObject, handles)
Запустите приложение и убедитесь, что нажатие на первую кнопку приводит к отображению графика функции, а вторая служит для очистки графика.
3.2 Конструирование интерфейса
3.2.1 Управление свойствами объектов
Разработка приложения сопряжена с изменением свойств объектов, которые они получают по умолчанию при размещении их на форме. Некоторые из свойств, например надпись на кнопке или ее размер, устанавливаются при создании объекта в режиме редактирования. Все свойства могут изменяться программно в работающем приложении.
3.2.2 Проектирование формы
Продолжите работу над приложением, следует изменить надписи на кнопках, например, на «Построить» и «Очистить». Кнопки имеют свойство String, принимаемое им значение есть отображаемая на кнопке строка. Измените в инспекторе надписи кнопок так, как было указано ранее. Запустите приложение.
3.2.3 Изменение свойств из программного кода
Свойства объектов можно устанавливать программно в ходе работы приложения. Усовершенствуйте приложение так, чтобы при запуске доступна только кнопка «Построить», а при нажатии на кнопку «Построить» выводится график, и она становится недоступной. В свою очередь, при нажатии должна стать доступной кнопка «Очистить».
Блокировка кнопки зависит от свойства Enable, при значении on доступна, a при off нет. Установка значений свойствам объектов в программе производится при помощи функции set.
Функция set вызывается с тремя параметрами - ссылкой на объект, свойство которого нужно поменять, названием свойства и его значением. Последние два аргумента заключаются в апострофы. Аргументы hObject и handles функций-обработчиков содержат указатели. В hObject хранится указатель на тот объект, событие которого обрабатывается в данный момент, a handles является вектором указателей на все объекты на форме. Например, handles.btnPlot является указателем на кнопку btnPlot. Установите в редакторе свойств для кнопки «Очистить» свойство Enable равным off, затем измените программу в соответствии с листингом 5.
Обработка состояний кнопок.
mygui.m:
function btnPlot_Callback(hObject, eventdata, handles)
set(hObject, 'Enable', 'off');
set(handles.btnClear, 'Enable', 'on');
drawPlot(x, y, handles);
function btnClear_Callback(hObject, eventdata, handles)
set(hObject, 'Enable', 'off');
set(handles.btnPlot, 'Enable', 'on');
Создайте заглушку для функции plotDialog. Не забывайте перед очередным запуском приложения сохранять как.m файл, так и.fig файл.
3.3 Работа над приложением
3.3.1 Запуск приложения
Запуск приложения осуществляется не только из редактора приложений. Для запуска приложения достаточно в качестве команды задать его имя в командной строке >>mygui
Каталог с приложением должен содержаться в путях поиска MATLAB или являться текущим.
3.3.2 Оформление интерфейса
Часто требуется, чтобы небольшое перемещение мыши вызывало изменение положения объекта на некоторый фиксированный шаг. Сетка редактора приложений позволяет осуществить такое дискретное движение. Выбор пункта Grid and Rulers меню Tools приводит к появлению диалогового окна.
Флаги Show rulers и Show grid соответствуют отображению линеек и сетки в редакторе приложений, а раскрывающийся список Grid Size позволяет выбрать размер ячеек сетки. Минимально допустимый размер - десять пикселей, он позволяет достаточно точно располагать элементы управления в окне приложений. Привязка перемещения к линиям сетки происходит при установленном флаге Snap to grid. Она позволяет размещать объекты и изменять их размер точно по линиям сетки.
3.4 Программирование элементов интерфейса
3.4.1 Флаги и рамки
Флаги Checkbox используются для изменения величин с двумя возможными значениями. Добавьте два флага с помощью панели инструментов и задайте значения String для них сетка по X и сетка по Y. Эти флаги должны устанавливать отображение соответствующей сетки на графике.
Обычно несколько элементов управления со схожим назначением группируются внутри рамки Panel с названием «Сетка». Измените размеры элемента axMain, освободив, справа место для рамки. Нанесите рамку на окно приложения при помощи соответствующей кнопки. В рамку добавьте два флага. Разместите поясняющие подписи рядом с флагами и установите для них значения Tag равные chbxGridX и chbxGridY, затем произведите необходимые изменения кода в соответствии с листингом 6.
Обработка событий отображения сетки.
function chbxGridX_Callback(hObject, eventdata, handles)
set(handles.axMain, 'XGrid', mapValue(hObject, 'Value'));
function chbxGridY_Callback(hObject, eventdata, handles)
set(handles.axMain, 'YGrid', mapValue(hObject, 'Value'));
Преобразование булевских значений в строковые.
mapValue.m:
function retval = mapValue(hObject, property)
if get(hObject, property)
Изменения в построении с условием наличия сетки.
Переключатели Radio Button предоставляют пользователю возможность изменять величины с несколькими возможными значениями. Всегда установлен только один переключатель из группы. С помощью них, например, можно реализовать переключение маркеров для узловых значений на квадраты или круги.
Добавьте в окно приложения новую панель Button Group (организует переключение для Radio Button самостоятельно), укажите для неё тег MarkGroup, название «Маркеры», затем нанесите на нее три переключателя, с именами rbMarkCirc, rbMarkSq, rbMarkNone, и надписями - «маркеры-круги», «маркеры-квадраты», «без маркеров» соответственно.
Состояние переключателя определяется его свойством Value: если Value равно единице, то переключатель включен. Задайте в редакторе свойств значение 1 свойству Value переключателя с надписью «без маркеров», тогда он будет включен при запуске программы.
Сохраняем ссылки на переключатели (логически группируем) и их значения в контексте формы в листинге 7.
Устанавливаем возможные значения.
mygui.m:
function mygui_OpeningFcn(hObject, eventdata, handles, varargin)
optionsList = [ handles.rbMarkNone handles.rbMarkSq handles.rbMarkCirc ];
optionsValues = [ 'n' 's' 'o' ];
setappdata(hObject, 'optionsList', optionsList);
setappdata(hObject, 'optionsValues', optionsValues);
function MarkGroup_SelectionChangeFcn(hObject, eventdata, handles)
Функция изменяет маркер в соответствии с выбранным переключателем.
changeMarker.m:
thePlot = getappdata(handles.axMain, 'plot');
markers = getappdata(handles.figure1, 'optionsValues');
set(thePlot, 'Marker', markers(getMarkerValue(handles)))
Функция возвращает текущий маркер.
getMarkerValue.m:
function markerValue = getMarkerValue(handles)
markerValue = getSelectedOption(getappdata(handles.figure1, 'optionsList'));
Функция возвращает текущий переключатель в указанной группе.
getSelectedOption.m:
function index = getSelectedOption(hObjectList)
for counter = (1 : length(hObjectList))
if get(hObjectList(counter), 'value') == 1
При помощи раскрывающегося списка можно предоставить возможность выбора цвета линии графика. Перейдите в режим редактирования и добавьте раскрывающийся список Pop-up Menu с тегом pmColor, элементами которого являются строки «синий», «красный», «зеленый» (поле String в многострочном режиме).
Запустите приложение и убедитесь, что раскрывающийся список содержит требуемые элементы. Выбор различных строк пока не приводит к изменению цвета линии - требуется запрограммировать событие Callback раскрывающегося списка.
Сохраняем вектор с цветами в контексте формы.
function GuiProj_OpeningFcn(hObject, eventdata, handles, varargin)
setappdata(hObject, 'colors', colors);
Внесите вызов ChangeColor в обработчик списка.
function pmColor_Callback(hObject, eventdata, handles)
Изменение цвета линии.
ChangeColor.m:
thePlot = getappdata(handles.axMain, 'plot');
colors = getappdata(handles.figure1, 'colors');
set(thePlot, 'Color', colors(get(handles.pmColor, 'value')))
3.4.4 Полосы прокрутки
С помощью полосы скроллинга можно задавать, например, толщину линии графика. Добавьте полосу скроллинга Slider в окно приложения и задайте название scrWidth. Снабдите полосу текстовым пояснением «Толщина линии».
Теперь следует определить соответствие между положением бегунка полосы и числовым значением свойства Value.
Выполните следующие установки из редактора свойств:
1. В Мах занесите десять, а в Min - единицу. Свойства Мах и Min полосы скроллинга отвечают за границы значений, записываемых в Value при перемещении бегунка.
3. Обратитесь к свойству SliderStep. Его значением является вектор из двух компонентов, первый из которых определяет относительное изменение Value при нажатии на кнопки со стрелками полосы скроллинга, а второй - при перетаскивании бегунка мышью. Следует установить значение [0.1 0.2] и нажатие на кнопки полосы изменит Value на десять процентов, а щелчок мыши справа или слева от бегунка на двадцать. Раскройте строку SliderStep щелчком мыши по знаку плюс слева от названия свойства и в появившихся строках х и у введите 0.1 и 0.2.
Изменение толщины линии.
mygui.m:
function scrWidth_Callback(hObject, eventdata, handles)
thePlot = getappdata(handles.axMain, 'plot');
set(thePlot, 'LineWidth', round(get(hObject, 'value')))
Изменение толщины линии при построении.
set(newPlot, 'LineWidth', round(get(handles.scrWidth, 'value')))
В данном случае реализован перехват исключительных ситуаций с помощью связки try и catch (например, когда Plot еще не инициализирован). При этом catch остается пустым, потому что никаких действий предпринимать не надо, изменение линии просто не сработает.
guide открывает GUIDE, среду проектирования пользовательского интерфейса. Среда GUIDE обеспечивает набор инструментов для создания пользовательских интерфейсов (UIs). Эти инструменты упрощают процесс разметки и программирования UIs.
guide( figs ) открывает каждый Figure объекты в figs в отдельной копии среды проектирования GUIDE. Используйте этот синтаксис, если вы хотите отредактировать одну или несколько существующих ранее фигур в GUIDE, которые были сохранены в переменные.
Примеры
Открытая фигура в GUIDE
Откройте существующую фигуру от своего пути MATLAB.
filename — Имя файла или путь сохраненной фигуры
вектор символов | строковый скаляр
Имя файла или путь сохраненной фигуры в виде вектора символов или строкового скаляра. Задайте полный путь, если фигура не находится на вашем пути MATLAB. Включая .fig в имени файла является дополнительным.
Пример: guide("output.fig")
Пример: guide('testModule')
Пример: guide("C:\Documents\Controls\power.fig")
figs — Существующий Figure объекты
один Figure возразите | массив Figure объекты
Существующий Figure объекты в виде одного Figure возразите или массив Figure объекты. Используйте этот аргумент, чтобы открыть одну или несколько ранее сохраненных фигур в отдельных экземплярах GUIDE. GUIDE создает фигуры с figure функция.
Пример: guide([f1 f2]);
Вопросы совместимости
GUIDE будет удален
Предупреждает запуск в R2021a
Среда GUIDE и guide функция будет удалена в будущем релизе.
После того, как GUIDE удален, большинство существующих приложений GUIDE продолжит запускаться в MATLAB, но не будет доступным для редактирования использованием среды перетаскивания в GUIDE. Чтобы продолжить редактировать существующее приложение GUIDE и справку обеспечивают ее совместимость с будущими релизами MATLAB, используют одну из предложенных перечисленных в таблице стратегий миграции.
App Designer является средой разработки рекомендуемого приложения в MATLAB. Чтобы создать новые приложения в интерактивном режиме, используйте appdesigner функцию вместо этого. Для получения дополнительной информации смотрите, Разрабатывают Приложения Используя App Designer.
Чтобы узнать больше о мигрирующих приложениях, см. Стратегии Миграции GUIDE.
В Matlab существует два способа создать графический интерфейс пользователя (Graphical user interface, GUI):
GUI Layout Editor
В редакторе GUI Layout Editor (команда guide в консоли Matlab) можно вручную создавать все элементы интерфейса: панели, кнопки, чекбоксы и т.д.
В результате создания интерфейса получим два файла: fig-файл с «фигурой» самого интерфейса и m-файл, который создается самим Matlab и содержит программный код всех элементов интерфейса.
Но более профессиональный подход – это создавать GUI программно, не пользуясь guide.
GUI programmatically
Преимущества програмного создания GUI:
- Легче управлять кодом GUI (код лучше структурирован, легче создавать новые элементы, удалять старые и т.д.)
- Нет отдельного fig-файла для интерфейса и отдельного программного m-файла (так как любое обновление fig-файла в guide требует соответствующего обновления m-файла и может привести к нежелательным эффектам).
Ознакомиться с guide, конечно, нужно на первых порах, чтобы лучше понять GUI в Matlab, но, по-моему, стоит переходить к программному созданию GUI чем быстрее, тем лучше.
Простые интерфейсы можно довольно просто создавать программно, а вот чем больше кнопок, боксов – тем больше усложняется эта задача.
Простой примеры программного создания интерфейса можно найти здесь GUI without guide.
Итак, одной из важных проблем при программном создании GUI является расположение элементов. Хороший обзор инструментов, которые помогают решить эту проблему есть по ссылке Matlab layout managers. К сожелению, только в комментариях к обзору по ссылке упомянули GUI Layout Toolbox. Вот об этом тулбоксе и пойдет речь дальше.
С помощью GUI Layout Toolbox полностью решается проблема с визуальным оформлением GUI (не зря GUI Layout Toolbox попал в выборку программы недели на главном портале Matlab Pick of the Week).
GUI with GUI Layout Toolbox
Общая инструкция по работе с GUI Layout Toolbox очень простая:
1. Создаем сетку (uiextras.Grid) (или можно этот шаг пропустить)
2. На сетку помещаем панели (uiextras.Panel),
3. На панели помещаем боксы (uiextras.Box)
4. В боксы помещаем элементы управления: кнопки, оси или еще что-нибудь.
Теперь о расположении всех элементов интерфейса заботиться GUI Layout Toolbox.
Наглядный пример GUI с помощью GUI Layout Toolbox с моими комментариями можно скачать по ссылке GUI_example.m.
Вместо заключения
Раньше я редко доводил программы до GUI и если и делал это, то только с помощью guide. Но с GUI Layout Toolbox эта задача очень сильно упростилась, за это большое спасибо разработчикам этого тулбокса.
Читайте также: