Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Применение MATLAB для решения аналитических задач моделирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Разработка пользовательского интерфейса
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) указывает родительский контейнер и одно или несколько значений свойств.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]