Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ № 5 Создание приложений с GUI без среды GU...doc
Скачиваний:
9
Добавлен:
24.11.2019
Размер:
470.53 Кб
Скачать

Лабораторная работа № 5 тема:«Создание приложений с gui без среды guide»

Это актуальный вопрос для тех, кто собирается писать сложные многооконные приложения с графическим интерфейсом. Начнем с самого простого примера.

Простой пример - приложение с кнопкой и осями

Требуется написать приложение с графическим интерфейсом, выводящее график функции на оси окна приложения при нажатии на кнопку Plot (см. рис. 1).

Это приложение будет файл-функцией myplotgui с подфункцией BtnPlotCallback обработки события Callback кнопки Plot, которое возникает при нажатии на кнопку (обработку событий можно организовывать и во внешних файлах), но мы пока будем программировать приложение в одной функции с подфункциями обработки событий элементов интерфейса и объектов приложения.

Рис. 1. Окно приложения myplotgui

В файл-функции myplotgui следует:

  1. Создать графическое окно при помощи функции figure

  2. Создать оси, вызвав функцию axes;

  3. Создать кнопку, т.е. графический объект uicontrol, использовав одноименную функцию uicontrol.

При создании кнопки в основной функции необходимо: указать ее положение в графическом окне приложения, задать надпись на ней и, самое главное, связать событие Callback с соответствующей подфункцией обработки события Callback при помощи указателя @ на подфункцию. При программировании обработки событий элементов интерфейса и объектов приложения (не только Callback, но и других) следует учитывать, что соответствующая подфункция обработки события должна иметь как минимум два входных аргумента, назовем их src и evt, как и в справочной системе MATLAB:

function BtnPlotCallback(src, evt)

где src содержит указатель на тот объект, который вызвал событие, а evt является структурой и может быть пустой для некоторых событий. Можно задавать и дополнительные входные аргументы для подфункций обработки событий, что будет рассмотрено ниже. Пока дополнительных аргументов не требуется и при создании кнопки Plot в основной функции мы зададим в качестве значения ее свойства Callback указатель на функцию BtnPlotCallback, т.е. @BtnPlotCallback.

Пока не будем заниматься точным заданием размеров графических объектов и напишем самый простой вариант файл-функции myplotgui с подфункцией

function myplotgui

% создание графического окна с заголовком myplotgui и без надписи Figure 1

hF = figure('Name', 'myplotgui', 'NumberTitle', 'off');

% создание осей

hA = axes('Position', [0.1 0.2 0.8 0.7]);

% создание кнопки и задание свойству Callback значения указателя на подфункцию

hBtnPlot = uicontrol('Style', 'pushbutton', ...

'Position', [20 20 120 30],...

'String', 'Plot',...

'Callback', @BtnPlotCallback);

function BtnPlotCallback(src,evt)

% подфункция обработки события Callback кнопки Plot

surf(peaks(30))

Функцию myplotgui с подфункцией BtnPlotCallback надо сохранить в одном файле myplotgui.m. Теперь для запуска нашего простого приложения с графическим интерфейсом достаточно вызвать его из командной строки (каталог, в котором находится файл myplotgui.m, должен быть текущим):

>> myplotgui

Нажатие на кнопку Plot приводит к появлению графика на осях окна приложения.

Функция uicontrol позволяет создать такие элементы управления, как кнопку, флаг, список и другие. То, что она создает, зависит от значения свойства Style, указанного при создании объекта.

Значение свойства Style

Что получается

pushbutton (по умолчанию)

кнопка

togglebutton

кнопка-переключатель

radiobutton

переключатель

checkbox

флаг

edit

область ввода текса

text

статический текст

slider

полоса скроллинга

listbox

список

popupmenu

раскрывающийся список

У всех объектов uicontrol многие остальные свойства имеют схожие значения, например: Position, Units, FontName, FontSize. Некоторые свойства имеют разный смысл. Если значение свойства String кнопки или флага - надпись на кнопке или флаге, то для списка это его содержимое. Кстати, событие Callback не единственно возможное. Назначение всех свойств и событий элементов интерфейса, создаваемых функцией uicontrol, описано в справочной системе:

>> doc uicontrol

Основные из них мы рассмотрим позже.