exponenta event banner

Создание простого приложения с помощью РУКОВОДСТВА

Примечание

Среда GUIDE будет удалена в следующей версии. После удаления GUIDE существующие приложения GUIDE будут продолжать работать в MATLAB ®, но они не будут редактироваться в GUIDE.

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

В этом примере показано, как использовать GUIDE для создания приложения с простым пользовательским интерфейсом, например, показанного здесь.

В последующих разделах описывается процесс создания этого приложения.

Если вы хотите только просмотреть и запустить код, который создал это приложение, установите текущую папку, к которой у вас есть доступ для записи. Скопируйте пример кода и откройте его в редакторе путем ввода следующих команд MATLAB:

copyfile(fullfile(docroot, 'techdoc','creating_guis',...
   'examples','simple_gui*.*')),fileattrib('simple_gui*.*', '+w');
guide simple_gui.fig;
edit simple_gui.m
Нажмите кнопку Выполнить, чтобы запустить приложение.

Открытие нового пользовательского интерфейса в редакторе компоновки GUIDE

  1. Откройте новый пустой графический интерфейс пользователя в GUIDE путем ввода guide по запросу MATLAB.

  2. Отображение имен компонентов на палитре компонентов:

    1. Выберите меню «Файл» > «Установки» > «РУКОВОДСТВО».

    2. Выберите «Показать имена в палитре компонентов».

    3. Нажмите кнопку ОК.

Задайте размер окна в GUIDE

Задайте размер окна, изменив размер области сетки в редакторе макетов. Щелкните правый нижний угол и перетащите его, пока холст не станет высотой приблизительно 3 дюйма и шириной 4 дюйма. При необходимости сделайте холст больше.

Компоновка пользовательского интерфейса

Добавьте, выровняйте и пометьте компоненты в интерфейсе пользователя.

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

  2. Добавьте остальные компоненты в пользовательский интерфейс.

    • Область статического текста

    • Всплывающее меню

    • Оси

    Расположите компоненты, как показано на следующем рисунке. Измените размеры компонента осей приблизительно к 2 на 2 дюйма.

Выравнивание компонентов

Если несколько компонентов имеют один и тот же родительский элемент, их можно выровнять с помощью инструмента «Выравнивание». Для выравнивания трех кнопок:

  1. Выберите все три кнопки, нажав Ctrl и щелкнув их.

  2. Выберите «Сервис» > «Выровнять объекты».

  3. В инструменте «Выравнивание» задайте следующие параметры:

    • Выравнивание влево в горизонтальном направлении.

    • Расстояние 20 пикселей между кнопками в вертикальном направлении.

  4. Нажмите кнопку ОК.

Маркировка кнопок

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

  1. Выберите меню «Вид» > «Инспектор свойств».

  2. В области компоновки нажмите верхнюю кнопку.

  3. В инспекторе свойств выберите String свойство, а затем замените существующее значение словом Surf.

  4. Нажмите клавишу Enter. Метка кнопки изменяется на «Переход».

  5. Нажмите каждую из оставшихся кнопок по очереди и повторите шаги 3 и 4. Пометьте среднюю кнопку Mesh и нижнюю кнопку Contour.

Пункты всплывающего меню списка

Во всплывающем меню можно выбрать три набора данных: пики, мембрану и sinc. Эти наборы данных соответствуют одноименным функциям MATLAB. В этом разделе показано, как перечислить эти наборы данных в качестве вариантов во всплывающем меню.

  1. В области компоновки выберите всплывающее меню.

  2. В Инспекторе свойств нажмите кнопку рядом с String. Откроется диалоговое окно «Строка».

  3. Замените существующий текст именами трех наборов данных: пиков, мембраны и sinc. Нажмите Enter для перехода к следующей строке.

  4. По завершении редактирования элементов нажмите кнопку ОК.

    Первый элемент в вашем списке, peaks, появляется во всплывающем меню в области макета.

Изменение статического текста

В этом пользовательском интерфейсе статический текст служит меткой для всплывающего меню. В этом разделе показано, как изменить статический текст для чтения Select Data.

  1. В области макета щелкните на статическом тексте.

  2. В Инспекторе свойств нажмите кнопку рядом с String. В появившемся диалоговом окне «Строка» замените существующий текст фразой. Select Data.

  3. Нажмите кнопку ОК.

    Фраза Select Data появляется в компоненте статического текста над всплывающим меню.

Сохранение макета

При сохранении макета GUIDE создает два файла: FIG-файл и файл кода. Файл FIG с расширением .fig, - двоичный файл, содержащий описание макета. Файл кода с расширением .m, содержит функции MATLAB, управляющие поведением приложения.

  1. Сохраните и запустите программу, выбрав Сервис > Выполнить.

  2. GUIDE отображает диалоговое окно: "Активация сохранит изменения в файле фигуры и коде MATLAB. Продолжить?

    Нажмите «Да».

  3. GUIDE открывает диалоговое окно Сохранить как (Save As) в текущей папке и запрашивает имя файла FIG.

  4. Перейдите в любую папку, для которой у вас есть права на запись, и введите имя файла simple_gui для файла FIG. GUIDE сохраняет как файл FIG, так и файл кода, используя это имя.

  5. Если папка, в которой сохраняются файлы, не находится в пути MATLAB, GUIDE открывает диалоговое окно, в котором можно изменить текущую папку.

  6. GUIDE сохраняет файлы simple_gui.fig и simple_gui.m, а затем запускает программу. Он также открывает файл кода в редакторе по умолчанию.

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

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

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

 simple_gui
Вы также можете использовать run с кодовым файлом, например,
run simple_gui

Примечание

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

Кодирование поведения приложения

При сохранении макета в предыдущем разделе, Save the Layout, GUIDE создал два файла: FIG-файл, simple_gui.figи файл программы, simple_gui.m. Однако приложение не реагирует, потому что simple_gui.m не содержит операторов, выполняющих действия. В этом разделе показано, как добавить код в файл, чтобы сделать приложение работоспособным.

Создание данных для печати

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

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

  1. Просмотрите функцию открытия в редакторе MATLAB.

    Если файл simple_gui.m еще не открыт в редакторе. Откройте редактор макетов, выбрав меню «Вид» > «Редактор».

  2. На вкладке РЕДАКТОР в разделе НАВИГАЦИЯ нажмите кнопку Перейти и выберите simple_gui_OpeningFcn.

    Курсор перемещается к открывающей функции, которая содержит следующий код:

    % --- Executes just before simple_gui is made visible.
    function simple_gui_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to simple_g(see VARARGIN)
    
    % Choose default command line output for simple_gui
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes simple_gwait for user response (see UIRESUME)
    % uiwait(handles.figure1);
  3. Создание данных для печати путем добавления следующего кода к открывающей функции сразу после начинающегося комментария % varargin...

    % Create the data to plot.
    handles.peaks=peaks(35);
    handles.membrane=membrane;
    [x,y] = meshgrid(-8:.5:8);
    r = sqrt(x.^2+y.^2) + eps;
    sinc = sin(r)./r;
    handles.sinc = sinc;
    % Set the current data value.
    handles.current_data = handles.peaks;
    surf(handles.current_data)

    Первые шесть исполняемых строк создают данные с помощью функций MATLAB. peaks, membrane, и sinc. Они хранят данные в handles структура, аргумент, предоставляемый для всех обратных вызовов. Обратные вызовы для кнопок могут извлекать данные из handles структура.

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

Поведение всплывающего меню кода

Во всплывающем меню представлены параметры печати данных. Когда пользователь выбирает один из трех графиков, программа MATLAB устанавливает всплывающее меню Value к индексу выбранного пункта меню. Обратный вызов всплывающего меню считывает всплывающее меню Value для определения элемента, который в настоящее время отображается и устанавливается в меню handles.current_data соответственно.

  1. Отображение обратного вызова всплывающего меню в редакторе MATLAB. В редакторе компоновки GUIDE щелкните правой кнопкой мыши компонент всплывающего меню и выберите Просмотр обратных вызовов > Обратный вызов.

    GUIDE отображает файл кода в редакторе и перемещает курсор на обратный вызов из всплывающего меню, который содержит следующий код:

    % --- Executes on selection change in popupmenu1.
    function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
  2. Добавьте следующий код в popupmenu1_Callback после начинающегося комментария % handles...

    Этот код сначала извлекает два свойства всплывающего меню:

    • String - массив ячеек, содержащий содержимое меню;

    • Value - индекс в содержимое меню выбранного набора данных

    Код затем использует switch , чтобы сделать выбранные данные набором текущих данных. Последняя инструкция сохраняет изменения в handles структура.

    % Determine the selected data set.
    str = get(hObject, 'String');
    val = get(hObject,'Value');
    % Set current data to the selected data set.
    switch str{val};
    case 'peaks' % User selects peaks.
       handles.current_data = handles.peaks;
    case 'membrane' % User selects membrane.
       handles.current_data = handles.membrane;
    case 'sinc' % User selects sinc.
       handles.current_data = handles.sinc;
    end
    % Save the handles structure.
    guidata(hObject,handles)

Поведение кнопки «Код»

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

  1. Отображение обратного вызова кнопки Surf в редакторе MATLAB. В редакторе макетов щелкните правой кнопкой мыши кнопку «Переход» и выберите команду «Просмотр обратных вызовов» > «Обратный вызов».

    В редакторе курсор перемещается к обратному вызову кнопки Surf в кодовом файле, содержащем следующий код:

    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
  2. Добавить следующий код к ответному вызову сразу после начинающегося комментария % handles...

    % Display surf plot of the currently selected data.
    surf(handles.current_data);
  3. Повторите шаги 1 и 2, чтобы добавить аналогичный код в обратные вызовы кнопок «Сетка» и «Контур».

    • Добавьте этот код к ответному вызову кнопки Mesh, pushbutton2_Callback:

        % Display mesh plot of the currently selected data.
        mesh(handles.current_data);
    • Добавьте этот код к ответному вызову кнопки Contour, pushbutton3_Callback:

        % Display contour plot of the currently selected data.
        contour(handles.current_data);
  4. Сохраните код, выбрав «Файл» > «Сохранить».

Запустить приложение

Во всплывающем меню Code the Behavior of the App вы запрограммировали всплывающее меню и кнопки. Также были созданы данные для использования и инициализирован просмотр. Теперь вы можете запустить свою программу, чтобы увидеть, как она работает.

  1. Запустите программу из редактора макетов, выбрав Инструменты > Выполнить.

  2. Во всплывающем меню выберите «Мембрана» и нажмите кнопку «Сетка». Приложение отображает сетчатый график логотипа L-образной мембраны MathWorks ®.

  3. Попробуйте другие комбинации перед закрытием окна.

Связанные темы