Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Применение MATLAB для решения аналитических задач моделирования. Учебное пособие
.pdf
Разработка пользовательского интерфейса
111
Check boxes
Editable text fields
Frames
List boxes
Pop-up menus
Push buttons
Radio buttons
Sliders
Static text labels
В результате создания интерфейса получают следующие файлы:
fig-файл с наброском интерфейса и m-файл, который создается самим
Matlab и содержит программный код всех элементов интерфейса.
Главное преимущество guide – легко сделать простой GUI, так как
весь код для интерфейса генерируется самим Matlab. Для работы с программной частью GUI достаточно изучить принцип обмена данными с
помощью команд setappdata и getappdata (что является стандартным приемом для обмена данными между различными элементами GUI).
Но более профессиональный подход – это создавать GUI программно, не пользуясь guide.
Диалоговое окно Опций графического интерфейса пользователя
Доступ к диалоговому окну из Редактора Компоновки GUIDE путем
выбора Tools> GUI Options. Опции, которые вы выбираете, вступают в силу в
следующий раз, когда вы сохраняете свой пользовательский интерфейс.
Установка настроек
Вы можете установить предпочтения для GUIDE. На вкладке
MATLAB Home в разделе Environment нажмите Preferences. Эти настройки применяются к GUIDE и ко всем UI пользовательским интерфейсам,
которые вы создаете. Настройки находятся в других местах диалогового
окна «Настройки».
Настройки подтверждения
Настройки подтверждения с помощью GUIDE задаются 2 способами. Можно выбрать, в каком виде отобразить поле диалогового окна под-
тверждения при:

Применение Matlab для решения аналитических задач моделирования
112
• активации пользовательского интерфейса от GUIDE;
• экспорте пользовательского интерфейса от GUIDE;
• изменении подписи коллбэка, сгенерированной GUIDE.
В диалоговом окне Preferences нажмите MATLAB> General>
Confirmation Dialogs, чтобы получить доступ к настройкам подтверждения
GUIDE. Ищите слово GUIDE в столбце Инструмента.
Поведение при изменении размера
Вы можете контролировать, могут ли пользователи изменять раз-
мер окна и как MATLAB обрабатывает изменение размера. GUIDE предлагает три варианта:
• Фиксированный размер – пользователи не могут изменять размер
окна (по умолчанию).
• Пропорциональный – программа автоматически масштабирует
компоненты пользовательского интерфейса пропорционально новому
размеру окна чертежа.
Другое (используя SizeChangedFcn) – запрограммируйте пользова-
тельский интерфейс таким образом, чтобы он вел себя определенным образом, когда пользователи изменяют размер окна рисования.
Первые два набора параметров отображают свойства компонентов
соответственно и не требуют никаких других действий. Другой (использование SizeChangedFcn) требует, чтобы вы написали стандартную программу обратного вызова, которая повторно вычисляет размеры и положения компонентов на основе нового размера формы.
Доступность командной строки
Вы можете ограничить доступ к окну чертежа из командной строки
или из файла кода с помощью параметров специальных возможностей
командной строки GUIDE.
Если вы явно не укажете дескриптор фигуры, многие команды, такие как plot, изменяют текущую фигуру (фигуру, полностью заданную
свойством CurrentFigure и возвращаемую командой gcf). Текущей фигурой обычно является фигура, которая была создана, задействована или на
которую был нажат последний раз курсор.

Разработка пользовательского интерфейса
113
Вы можете программно назвать фигуру h (где h – ее указатель) те-
кущей фигурой четырьмя способами:
set(groot,'CurrentFigure',h) – делает фигуру h текущей, но не изменя-
ет ее видимость или размещение относительно других фигур;
figure(h) – делает фигуру h текущей, видимой, и отображенной по-
верх других фигур;
axes(h) – делает существующие оси h текущей системой координат
и отображает фигуру, содержащую его поверх других фигур;
plot(h,...), или любая функция построения графика, которая берет
оси в качестве ее первого аргумента, также делает существующие оси h
текущей системой координат и отображает фигуру, содержащую его, поверх других фигур.
Функция gcf возвращает указатель текущей фигуры. Пример син-
таксиса приведен ниже:
h = gcf
Для пользовательского интерфейса, созданного в GUIDE, установите параметр специальных возможностей командной строки, чтобы
пользователи не могли непреднамеренно изменить внешний вид или
содержимое пользовательского интерфейса, выполняя команды в командной строке или из сценария или функции, такой как plot. Ниже
кратко описаны эти четыре параметра специальных возможностей командной строки:
• Коллбэк (графический интерфейс пользователя становится Теку-
щей фигурой в Коллбэках), доступ к пользовательскому интерфейсу возможен только из обратного вызова. Доступ к пользовательскому интерфейсу невозможен из командной строки или из сценария. Это значение по
умолчанию.
• Доступ к пользовательскому интерфейсу из обратного вызова,
командной строки или сценария без указателя невозможен.
• Доступ к пользовательскому интерфейсу можно получить из об-
ратного вызова командной строки и из сценария.
• Вы управляете доступностью, устанавливая свойства Handle
Visibility и IntegerHandle в инспекторе свойств.

Применение Matlab для решения аналитических задач моделирования
114
Генерация Файла FIG и файла MATLAB
Выберите Generate FIG-file and MATLAB file в диалоговом окне
GUI Options, если вы хотите, чтобы GUIDE создал как файл FIG, так и
файл кода пользовательского интерфейса (по умолчанию). Если вы выберете эту опцию, вы можете выбрать любой из следующих элементов в
системе координат для настройки кода пользовательского интерфейса:
• Генерация прототипов функции обратного вызова.
• Графический интерфейс пользователя позволяет только одному
экземпляру запускаться (Singleton).
• Использование системной цветовой схемы для фона.
• Генерация прототипов функции обратного вызова.
Если вы выберете «Создать прототипы функций обратного вызова»
в диалоговом окне «Параметры графического интерфейса», GUIDE добавит шаблоны для часто используемых обратных вызовов в файл кода для
большинства компонентов. Затем вы должны ввести код в эти шаблоны.
GUIDE также добавляет обратный вызов каждый раз, когда вы редактируете программу обратного вызова по умолчанию из контекстного меню
Редактора макета, вызываемого правой кнопкой мыши, и когда вы добавляете меню в пользовательский интерфейс с помощью Редактора меню.
Графический интерфейс пользователя позволяет только одному экземпляру запускаться (Singleton).
Эта опция позволяет вам выбирать между двумя режимами работы
окна рисунка:
• Разрешить программному обеспечению MATLAB отображать
только один экземпляр пользовательского интерфейса за раз.
• Разрешить программному обеспечению MATLAB отображать не-
сколько экземпляров пользовательского интерфейса.
Если вы разрешаете только один экземпляр, программа снова использует существующую фигуру каждый раз, когда команда запускает
вашу программу. Если окно пользовательского интерфейса уже существует, программное обеспечение выводит его на передний план вместо создания новой формы.
Если вы используете эту функцию, программа создает новую фигуру каждый раз, когда вы даете команду на использование приложения.

Разработка пользовательского интерфейса
115
Даже если вы разрешите существование только одного экземпляра
пользовательского интерфейса, инициализация может происходить каждый раз, когда вы вызываете его из командной строки. Например, код в
OpeningFcn будет выполняться каждый раз при запуске программы
GUIDE, если только вы не предпримете шаги, чтобы предотвратить это.
Одним из способов управления этим поведением является добавление флага в структуру handles. Вы можете сделать это в OpeningFcn, который может запустить код инициализации, если этот флаг еще не существует, и пропустить этот код, если он есть.
Примечание. Эта опция доступна только в том случае, если вы
сначала выбрали файл MATLAB и опцию Generate FIG-file.
Использование цветовой схемы системного фона
Цвет по умолчанию, используемый для компонентов пользовательского интерфейса, зависит от системы. Эта опция позволяет сделать цвет
фона фигуры таким же, как цвет фона компонента по умолчанию.
Чтобы фон фигуры соответствовал цвету компонентов, выберите
цветовую схему «Использовать для системы знаний» в диалоговом окне
«Параметры графического интерфейса».
Опция Generate File Only FIG позволяет открывать формы и пользовательские интерфейсы для ограниченного редактирования. Они могут
быть общедоступными формами и не обязательно должны быть пользовательскими интерфейсами. Пользовательские интерфейсы не должны создаваться с помощью GUIDE. Этот режим имеет ограниченное использование и может быть полезен для пользовательских интерфейсов, созданных в MATLAB 5.3 и более ранних версиях. Дополнительную информацию можно найти описании GUIDE.
GUIDE выбирает «Создать файл FIG» по умолчанию только в том
случае, если вы выполняете одно из следующих действий:
guide(f)
В этом случае GUIDE выбирает только «Создать файл FIG», даже
если файл кода с соответствующим именем существует в той же папке.
guide('myfig.fig')

Применение Matlab для решения аналитических задач моделирования
116
Используйте вкладку GUIDE Open Existing GUI, чтобы открыть
файл FIG, для которого никакой файл кода с тем же именем не существует в той же папке.
Когда вы сохраняете фигуру или пользовательский интерфейс с
выбранным только Генерировать файл FIG, GUIDE сохраняет только
файл FIG. Вы должны обновить любые соответствующие файлы кода самостоятельно по мере необходимости.
Если вы хотите, чтобы GUIDE управлял файлом кода пользовательского интерфейса для вас, измените выбор на Генерировать файл FIG
и файл MATLAB перед сохранением пользовательского интерфейса. Если
в том же месте нет соответствующего файла кода, GUIDE создает его.
Если в той же папке существует файл кода с тем же именем, что и
исходная форма или пользовательский интерфейс, GUIDE перезаписывает
его. Чтобы предотвратить перезапись существующего файла, сохраните
пользовательский интерфейс с помощью команды «Сохранить как» в меню
«Файл». Выберите другое имя файла для этих двух файлов. GUIDE соответствующим образом обновляет имена переменных в новом файле кода.
Настройка обратной совместимости
Файлы FIG пользовательского интерфейса, созданные или измененные с MATLAB 7.0 или более поздней версией, не автоматически совместимы с Версией 6.5 и более ранними версиями. GUIDE автоматически
генерирует файлы FIG, которые являются двоичными файлами, которые
содержат информацию макета пользовательского интерфейса.
Чтобы сделать файл FIG обратно совместимым, из Редактора макетов, выбирают File> Preferences> General> MAT-Files, и затем выбирают
MATLAB Version 5 or later (save -v6).
Обратные вызовы для UIs без кода
Даже при отсутствии файла кода, связанного с файлом UI FIG, вы
все равно можете предоставить обратные вызовы для компонентов пользовательского интерфейса, чтобы заставить их выполнять действия при
использовании. В инспекторе свойств можно вводить обратные вызовы в
форме векторов символов, встроенных функций или имен файлов кода

Разработка пользовательского интерфейса
117
MATLAB; когда ваша программа запустится, она выполнит их, если это
возможно. Если обратный вызов является именем файла, он может включать аргументы этой функции. Например, установка для свойства Callback
кнопки значения sqrt(2) приводит к отображению результата выражения в
командном окне:
ans = 1.4142
Любой файл, который выполняет обратный вызов, должен нахо-
диться в текущей папке или на пути MATLAB.
Генерация прототипов функции обратного вызова
Если вы выберете «Создать прототипы функций обратного вызова»
в диалоговом окне «Параметры графического интерфейса», GUIDE добавит шаблоны для часто используемых обратных вызовов в файл кода для
большинства компонентов. Затем вы должны ввести код в эти шаблоны.
GUIDE также добавляет обратный вызов каждый раз, когда вы
редактируете программу обратного вызова по умолчанию из контекстного меню Редактора макета, вызываемого правой кнопкой мыши,
и когда вы добавляете меню в пользовательский интерфейс с помощью
Редактора меню.
Показ расширения файла в заголовке окна
Отображает имя файла файла FIG с его расширением файла .fig, в
заголовке окна Layout Editor.
Показ пути к файлу в заголовке окна
Отображает полный путь к файлу в заголовке окна Layout Editor.
Если неконтролируемый, путь к файлу не отображен.
Добавление комментариев для недавно сгенерированных функций
обратного вызова
Коллбэки являются блоками кода, которые выполняются в ответ на
действия пользователем, такие как нажатие кнопок или управление ползунками. По умолчанию GUIDE настраивает шаблоны, которые объявляют коллбэки как функции, и добавляет комментарии в начале каждого.
Большинство комментариев похожи на следующие:

Применение Matlab для решения аналитических задач моделирования
118
% --- Executes during object deletion, before destroying properties.
function figure1_DeleteFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Некоторые обратные вызовы добавляются автоматически, поскольку связанные с ними компоненты являются частью исходного выбранного
вами шаблона GUIDE. Другие часто используемые обратные вызовы добавляются автоматически при добавлении компонентов. Вы также можете
добавить обратные вызовы явно, выбрав их в меню View > View Callbacks
или в контекстном меню компонента.
Если вы отмените выбор этого параметра, GUIDE включает только
комментарии для обратных вызовов, которые автоматически включаются
для поддержки исходного шаблона GUIDE. GUIDE не включает комментарии для обратных вызовов, впоследствии добавленных в код.
Преимущества программного создания GUI
Легче управлять кодом GUI (код лучше структурирован, проще создавать новые элементы, удалять старые и т.д.)
Отдельного fig-файла для интерфейса и отдельного m-файла программы нет, поскольку любое обновление fig-файла в гайде требует соответствующего обновления m-файла и может привести к нежелательным
эффектам.
А вот здесь и открывается другая сторона медали. Главная трудность в программном создании GUI в MATLAB то, что нужно вручную
указывать расположение всех элементов интерфейса (параметр ‘Position’ с
4-я элементами: x,y координаты + ширина и длина). Это очень неудобно.
В guide это проблема решается очень просто – с помощью инструмента
Tools->Align Objects.
В меню можно выбрать один из четырех типов графического интерфейса. Необходимо выбрать пустой графический интерфейс Blank GUI
(Default) – «Пустой графический интерфейс (по умолчанию)».
Среди часто используемых атрибутов GUI находятся кнопка, переключатель, ползунок и флажок, Редактировать текст, статический текст,
всплывающее меню, список, кнопка питания, таблица, панель осей коор-

Разработка пользовательского интерфейса
119
динат (панель), группа кнопок (группа кнопок), элемент управления
ActiveX (элемент управления ActiveX).
Здесь давайте сначала создадим простой графический интерфейс
для отображения.
Перетащите каждую из «осей» и «кнопок» в левую часть области
выбора и отрегулируйте размер:
Static Text
В дополнение к файлу .fig с вашим именем файла после сохранения
будет автоматически создан файл .m с тем же именем, что и у вас. На этом
новый графический интерфейс готов.
Щелкните правой кнопкой мыши файл .fig, сгенерированный справа от Matlab, выберите «Открыть в GUIDE», чтобы открыть его с помощью GUIDE, дважды щелкните ось координат или кнопку, добавленную
выше, чтобы открыть информацию об элементе управления пользователя:
Дважды щелкните, чтобы открыть созданный выше файл .m, и напишите следующий код в функции pushbutton1_Callback (hObject, eventdata, handles):
Простые интерфейсы можно довольно просто создавать программно, а вот чем больше кнопок, боксов – тем больше усложняется эта задача.
Одной из важных проблем при программном создании GUI является расположение элементов.
GUI with GUI Layout Toolbox
Этот инструментарий был разработан Беном Тордоффом и Дэвидом Сэмпсоном из консалтинговой группы MathWorks. С помощью GUI
Layout Toolbox полностью решается проблема с визуальным оформлением GUI (не зря GUI Layout Toolbox попал в подборку программы на главном портале Matlab Pick of the Week).
Основная идея этого тулбокса отражена в его названии – это создание макетов (макетов), упрощающих расположение элементов в
главном окне GUI. Этот тулбокс имеет очень хорошие позиции (только
на русском языке).
Общее руководство по работе с GUI Layout Toolbox очень простое.
1. Создаем сетку (uiextras.Grid).
2. На сетку помещаем панель (uiextras.Panel).

Применение Matlab для решения аналитических задач моделирования
120
3. На панель вставляем боксы (uiextras.Box).
4. В боксы помещаем элементы управления: кнопки, оси или еще
что-нибудь.
Теперь GUI Layout Toolbox заботится о компоновке всех элементов
интерфейса.
Использование UICalendar в автономном режиме
Вы можете использовать пользовательский интерфейс UICalendar в
автономном режиме для поиска любой даты. Чтобы использовать автономный режим, введите следующую команду открыть графический интерфейс UICalendar:
uicalendar
Щелкните на элементы управления датой и годом, чтобы найти
любую дату.
Использование UICalendar с приложением
Вы можете использовать пользовательский интерфейс UICalendar с
приложением для поиска любой даты. Чтобы использовать графический
интерфейс UICalendar с приложением, используйте следующую команду:
uicalendar('PARAM1', VALUE1, 'PARAM2', VALUE2', ...)
Команда uimenu создает меню или список
m = uimenu создает меню в текущей фигуре и возвращает объект
Menu. Если фигуры нет, MATLAB® вызывает функцию фигуры, чтобы
создать ее.
m = uimenu(Name,Value) задает значения свойств меню, используя
один или несколько аргументов пары "имя-значение".
m = uimenu(parent) создает меню в указанном родительском кон-
тейнере. Родительским контейнером может быть фигура, созданная с помощью функции figure или uifigure, или другой объект Menu. Значения
свойств для uimenu немного различаются в зависимости от того, создано
ли приложение с помощью функции figure или uifigure.
m = uimenu(parent,Name,Value) указывает родительский контейнер
и одно или несколько значений свойств.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
