Примечание
Среда GUIDE будет удалена в следующей версии. После удаления GUIDE существующие приложения GUIDE будут продолжать работать в MATLAB ®, но они не будут редактироваться в GUIDE.
Чтобы продолжить редактирование существующего приложения GUIDE, см. раздел Стратегии миграции GUIDE для получения информации о том, как поддерживать совместимость приложения с будущими выпусками MATLAB. Чтобы создать новые приложения в интерактивном режиме, разработайте приложения с помощью App Designer.
Кодирование поведения компонента пользовательского интерфейса включает конкретные задачи, которые уникальны для типа компонента, с которым вы работаете. Этот раздел содержит простые примеры обратных вызовов для каждого типа компонента. Общие сведения о кодировании обратных вызовов см. в разделе Запись обратных вызовов в GUIDE или Запись обратных вызовов для программных приложений.
При работе в GUIDE щелкните правой кнопкой мыши компонент в макете и выберите соответствующее свойство обратного вызова в меню View Callbacks. При этом создается пустая функция обратного вызова, автоматически связанная с компонентом. Имя конкретной функции, создаваемой GUIDE, основано на Tag свойство, поэтому имя функции может немного отличаться от имени функции в коде примера. Не изменяйте имя функции, создаваемой GUIDE в коде. Чтобы использовать код примера в приложении, скопируйте код из тела функции примера в тело функции.
Этот код является примером функции обратного вызова кнопки в GUIDE. Связать эту функцию с кнопкой Callback для выполнения, когда конечный пользователь нажимает кнопку.
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) display('Goodbye'); close(gcf);
Первая строка кода, display('Goodbye'), дисплеи 'Goodbye' в окне команд. Следующая строка получает окно пользовательского интерфейса с помощью gcf а затем закрывает его.
Этот код является примером функции обратного вызова кнопки переключения в GUIDE. Связать эту функцию с кнопкой переключения Callback для выполнения при нажатии конечным пользователем кнопки переключения.
function togglebutton1_Callback(hObject,eventdata,handles) % hObject handle to togglebutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of togglebutton1 button_state = get(hObject,'Value'); if button_state == get(hObject,'Max') display('down'); elseif button_state == get(hObject,'Min') display('up'); end
Кнопка переключения Value соответствует свойству Min если переключатель включен. Value изменения в Max значение при нажатии кнопки переключения. Эта функция обратного вызова получает кнопку переключения Value свойство и затем сравнивает его с Max и Min свойства. Если кнопка нажата, отображается функция 'down' в окне команд. Если кнопка включена, отображается функция 'up'.
Этот код является примером функции обратного вызова переключателя в GUIDE. Связать эту функцию с переключателем Callback для выполнения, когда конечный пользователь нажимает на переключатель.
function radiobutton1_Callback(hObject, eventdata, handles) % hObject handle to radiobutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton1 if (get(hObject,'Value') == get(hObject,'Max')) display('Selected'); else display('Not selected'); end
Переключатель «» Value соответствует свойству Min если переключатель не установлен. Value изменения в Max значение, если установлен переключатель. Эта функция обратного вызова получает переключатели Value свойство и затем сравнивает его с Max и Min свойства. Если кнопка выбрана, отображается функция 'Selected' в окне команд. Если кнопка не выбрана, отображается функция 'Not selected'.
Примечание
Используйте группу кнопок для управления поведением исключительного выбора для переключателей. Дополнительные сведения см. в разделе Группа кнопок.
Этот код является примером функции обратного вызова флажка в GUIDE. Связать эту функцию с флажком Callback , чтобы оно выполнялось, когда конечный пользователь нажимает на флажок.
function checkbox1_Callback(hObject, eventdata, handles) % hObject handle to checkbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of checkbox1 if (get(hObject,'Value') == get(hObject,'Max')) display('Selected'); else display('Not selected'); end
Флажок «» Value соответствует свойству Min если флажок не установлен. Value изменения в Max значение, если флажок установлен. Эта функция обратного вызова получает флажок Value свойство и затем сравнивает его с Max и Min свойства. Если флажок установлен, отображается функция. 'Selected' в окне команд. Если флажок не установлен, отображается 'Not selected'.
Этот код является примером обратного вызова для текстового поля редактирования в GUIDE. Связать эту функцию с uiccontrol Callback для выполнения, когда конечный пользователь вводит текст в текстовое поле.
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents as double input = get(hObject,'String'); display(input);
Когда пользователь вводит символы внутри текстового поля и нажимает клавишу Enter, функция обратного вызова извлекает эти символы и отображает их в окне команд.
Чтобы пользователи могли вводить несколько строк текста, установите Max и Min свойства к числовым значениям, которые удовлетворяют Max - Min > 1. Например, установить Max кому 2, и Min кому 0 чтобы удовлетворить неравенство. В этом случае функция обратного вызова запускается при щелчке конечного пользователя по области пользовательского интерфейса, находящейся вне текстового поля.
Если требуется интерпретировать содержимое текстового поля редактирования как числовые значения, преобразуйте символы в числа с помощью str2double функция. str2double функция возвращает NaN для нечислового ввода.
Этот код является примером функции обратного вызова поля редактирования, которая интерпретирует ввод пользователя как числовые значения.
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents as a double input = str2double(get(hObject,'String')); if isnan(input) errordlg('You must enter a numeric value','Invalid Input','modal') uicontrol(hObject) return else display(input); end
Когда конечный пользователь вводит значения в текстовое поле редактирования и нажимает клавишу Enter, функция обратного вызова получает значение String и преобразует его в числовое значение. Затем он проверяет, является ли значение NaN (нечисловой). Если вход NaN, то обратный вызов открывает диалоговое окно ошибки.
Этот код является примером функции обратного вызова ползунка в GUIDE. Связать эту функцию с ползуном Callback для выполнения при перемещении ползунка конечным пользователем.
function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine... slider_value = get(hObject,'Value'); display(slider_value);
Когда конечный пользователь перемещает ползунок, функция обратного вызова получает текущее значение ползунка и отображает его в окне команд. По умолчанию диапазон ползунка равен [0, 1]. Чтобы изменить диапазон, установите ползунок Max и Min до максимального и минимального значений соответственно.
Если вы разрабатываете приложение с помощью GUIDE, используйте поле со списком CreateFcn обратный вызов для добавления элементов в список.
Этот код является примером списка CreateFcn обратный вызов, который заполняет список элементами, Red, Green, и Blue.
function listbox1_CreateFcn(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns % Hint: listbox controls usually have a white background on Windows. if ispc && isequal(get(hObject,'BackgroundColor'), ... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end set(hObject,'String',{'Red';'Green';'Blue'});
set(hObject,'String',{'Red';'Green';'Blue'}), заполняет содержимое списка.Когда конечный пользователь выбирает элемент списка, Value свойство изменяется на число, соответствующее положению элемента в списке. Например, значение 1 соответствует первому элементу списка. Если требуется изменить выбор в коде, измените Value свойство к другому номеру между 1 и количество элементов в списке.
Например, можно использовать handles структура в GUIDE для доступа к списку и изменения Value свойство:
set(handles.listbox1,'Value',2)Первый аргумент, handles.listbox1, может отличаться в коде, в зависимости от значения поля списка Tag собственность.
Этот код является примером функции обратного вызова списка в GUIDE. Связать эту функцию со списком Callback для выполнения при выборе элемента в поле списка.
function listbox1_Callback(hObject, eventdata, handles) % hObject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns contents % contents{get(hObject,'Value')} returns selected item from listbox1 items = get(hObject,'String'); index_selected = get(hObject,'Value'); item_selected = items{index_selected}; display(item_selected);
Когда конечный пользователь выбирает элемент в поле списка, функция обратного вызова выполняет следующие задачи:
Получает все элементы в поле списка и сохраняет их в переменной, items.
Возвращает числовой индекс выбранного элемента и сохраняет его в переменной. index_selected.
Возвращает значение выбранного элемента и сохраняет его в переменной. item_selected.
Отображение выбранного элемента в окне команд MATLAB.
Пример приложения Interactive List Box в GUIDE показывает, как заполнить список именами каталогов.
Если вы разрабатываете приложение с помощью GUIDE, используйте всплывающее меню CreateFcn обратный вызов для добавления элементов во всплывающее меню.
Этот код является примером всплывающего меню CreateFcn обратный вызов, который заполняет меню элементами, Red, Green, и Blue.
function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns % Hint: popupmenu controls usually have a white background on Windows. if ispc && isequal(get(hObject,'BackgroundColor'),... get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end set(hObject,'String',{'Red';'Green';'Blue'});
set(hObject,'String',{'Red';'Green';'Blue'}), заполняет содержимое всплывающего меню.Когда конечный пользователь выбирает элемент, всплывающее меню Value свойство изменяется на число, соответствующее положению элемента в меню. Например, значение 1 соответствует первому элементу списка. Если требуется изменить выбор в коде, измените Value свойство к другому номеру между 1 и количество элементов в меню.
Например, можно использовать handles структура в GUIDE для доступа к всплывающему меню и изменения Value свойство:
set(handles.popupmenu1,'Value',2)Первый аргумент, handles.popupmenu1, может отличаться в коде, в зависимости от значения всплывающего меню Tag собственность.
Этот код является примером функции обратного вызова всплывающего меню в GUIDE. Связать эту функцию с всплывающим меню Callback для выполнения, когда конечный пользователь выбирает элемент из меню.
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) % Hints: contents = cellstr(get(hObject,'String')) returns contents... % contents{get(hObject,'Value')} returns selected item... items = get(hObject,'String'); index_selected = get(hObject,'Value'); item_selected = items{index_selected}; display(item_selected);
Когда пользователь выбирает пункт во всплывающем меню, функция обратного вызова выполняет следующие задачи:
Получает все элементы во всплывающем меню и сохраняет их в переменной, items.
Возвращает числовой индекс выбранного элемента и сохраняет его в переменной. index_selected.
Возвращает значение выбранного элемента и сохраняет его в переменной. item_selected.
Отображение выбранного элемента в окне команд MATLAB.
Можно создать функцию обратного вызова, которая выполняется при щелчке правой кнопкой мыши или левой кнопкой мыши на панели. Если вы работаете в GUIDE, щелкните правой кнопкой мыши панель в макете и выберите Просмотр обратных вызовов > ButureDureFcn, чтобы создать функцию обратного вызова.
Этот код является примером ButtonDownFcn обратный вызов в GUIDE.
function uipanel1_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to uipanel1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) display('Mouse button was pressed');
'Mouse button was pressed', в окне команд.По умолчанию пользовательские интерфейсы GUIDE не могут быть изменены, но можно переопределить это поведение, выбрав «Сервис» > «Параметры графического интерфейса пользователя» и установив для параметра «Изменить поведение» значение «Пропорциональное».
При изменении размера окна пользовательского интерфейса положение компонентов в окне корректируется по мере изменения его размера пользователем. При наличии панели в пользовательском интерфейсе размер панели изменится в зависимости от размера окна. Используйте панели SizeChangedFcn обратный вызов, чтобы приложение выполняло определенные задачи при изменении размера панели.
Этот код является примером панели SizeChangedFcn обратный вызов в приложении GUIDE. Когда пользователь изменяет размер окна, эта функция изменяет размер шрифта статического текста внутри панели.
function uipanel1_SizeChangedFcn(hObject, eventdata, handles) % hObject handle to uipanel1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(hObject,'Units','Points') panelSizePts = get(hObject,'Position'); panelHeight = panelSizePts(4); set(hObject,'Units','normalized'); newFontSize = 10 * panelHeight / 115; texth = findobj('Tag','text1'); set(texth,'FontSize',newFontSize);
Если пользовательский интерфейс содержит вложенные панели, их размер будет изменяться изнутри (в порядке «потомок-родитель»).
Примечание
Для автоматического изменения размера текста в палитре установите fontUnits свойство для 'normalized'.
Группы кнопок аналогичны панелям, но они также управляют исключительным выбором переключателей и переключателей. Если группа кнопок содержит несколько переключателей или переключателей, группа кнопок позволяет конечному пользователю выбрать только одну из них.
Не кодируйте обратные вызовы для отдельных кнопок, входящих в группу кнопок. Вместо этого используйте группу кнопок SelectionChangedFcn обратный вызов для ответа, когда конечный пользователь выбирает кнопку.
Этот код является примером группы кнопок SelectionChangedFcn обратный вызов, который управляет двумя переключателями и двумя переключателями.
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles) % hObject handle to the selected object in uibuttongroup1 % eventdata structure with the following fields % EventName: string 'SelectionChanged' (read only) % OldValue: handle of the previously selected object or empty % NewValue: handle of the currently selected object % handles structure with handles and user data (see GUIDATA) switch get(eventdata.NewValue,'Tag') % Get Tag of selected object. case 'radiobutton1' display('Radio button 1'); case 'radiobutton2' display('Radio button 2'); case 'togglebutton1' display('Toggle button 1'); case 'togglebutton2' display('Toggle button 2'); end
Когда конечный пользователь выбирает переключатель или переключатель в группе кнопок, эта функция определяет, какую кнопку пользователь выбрал на основе кнопок Tag собственность. Затем он выполняет код внутри соответствующего case.
Примечание
Группа кнопок SelectedObject содержит дескриптор кнопки, выбранной пользователем. Это свойство можно использовать в другом месте кода для определения кнопки, выбранной пользователем.
Код в этом разделе содержит примеры функций обратного вызова, которые отвечают, когда конечный пользователь выбирает в этом меню Edit > Copy > To File.

% -------------------------------------------------------------------- function edit_menu_Callback(hObject, eventdata, handles) % hObject handle to edit_menu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) display('Edit menu selected'); % -------------------------------------------------------------------- function copy_menu_item_Callback(hObject, eventdata, handles) % hObject handle to copy_menu_item (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) display('Copy menu item selected'); % -------------------------------------------------------------------- function tofile_menu_item_Callback(hObject, eventdata, handles) % hObject handle to tofile_menu_item (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [filename,path] = uiputfile('myfile.m','Save file name');
Функции обратного вызова запускают в ответ на следующие действия:
Когда конечный пользователь выбирает меню Edit, edit_menu_Callback функция отображает текст, 'Edit menu selected', в окне команд MATLAB.
Когда конечный пользователь наведет указатель мыши на пункт меню Copy, copy_menu_item_Callback функция отображает текст, 'Copy menu item selected', в окне команд MATLAB.
Когда конечный пользователь щелкает и отпускает кнопку мыши в пункте меню To File, tofile_menu_item_Callback отображает диалоговое окно, в котором конечному пользователю предлагается выбрать папку назначения и имя файла.
tofile_menu_item_Callback функция вызывает uiputfile , чтобы предложить конечному пользователю указать конечный файл и папку. Если вы хотите создать пункт меню, который предлагает пользователю существующий файл, например, если ваш пользовательский интерфейс имеет пункт меню Открыть файл, то используйте uigetfile функция.
При создании каскадного меню, подобного этому, промежуточные пункты меню запускаются при наведении на них курсора мыши. Последний, завершающий пункт меню запускается при отпускании кнопки мыши над пунктом меню.
Можно добавить флажок рядом с пунктом меню, чтобы указать, что опция включена. В GUIDE можно установить флажок «Отметьте этот пункт в редакторе меню», чтобы пункт меню был установлен по умолчанию. Каждый раз, когда конечный пользователь выбирает пункт меню, функция обратного вызова может включать или выключать проверку.
Этот код показывает, как изменить флажок рядом с пунктом меню.
if strcmp(get(hObject,'Checked'),'on') set(hObject,'Checked','off'); else set(hObject,'Checked','on'); end
strcmp функция сравнивает два символьных вектора и возвращает true когда они совпадают. В этом случае возвращается true когда пункт меню Checked свойство соответствует вектору символов, 'on'.
Дополнительные сведения о создании пунктов меню в GUIDE см. в разделе Создание меню для приложений GUIDE.
Этот код является примером функции обратного вызова таблицы, CellSelectionCallback. Связать эту функцию с таблицей CellSelectionCallback для выполнения при выборе конечным пользователем ячеек в таблице.
function uitable1_CellSelectionCallback(hObject, eventdata, handles) % hObject handle to uitable1 (see GCBO) % eventdata structure with the following fields % Indices: row and column indices of the cell(s) currently selected % handles structure with handles and user data (see GUIDATA) data = get(hObject,'Data'); indices = eventdata.Indices; r = indices(:,1); c = indices(:,2); linear_index = sub2ind(size(data),r,c); selected_vals = data(linear_index); selection_sum = sum(sum(selected_vals))
Когда конечный пользователь выбирает ячейки в таблице, эта функция выполняет следующие задачи:
Получает все значения в таблице и сохраняет их в переменной, data.
Получение индексов выбранных ячеек. Эти индексы соответствуют строкам и столбцам в data.
Преобразует индексы строк и столбцов в линейные индексы. Линейные индексы позволяют выбрать несколько элементов в массиве с помощью одной команды.
Возвращает значения, выбранные конечным пользователем, и сохраняет их в переменной. selected_vals.
Суммирует все выбранные значения и отображает результат в окне команд.
Этот код является примером функции обратного вызова таблицы, CellEditCallback. Связать эту функцию с таблицей CellEditCallback для выполнения при редактировании конечным пользователем ячейки в таблице.
function uitable1_CellEditCallback(hObject, eventdata, handles) % hObject handle to uitable1 (see GCBO) % eventdata structure with the following fields % Indices: row and column indices of the cell(s) edited % PreviousData: previous data for the cell(s) edited % EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. % Empty if Data was not changed % Error: error string when failed to convert EditData data = get(hObject,'Data'); data_sum = sum(sum(data))
ColumnEditable свойство должно иметь значение true по крайней мере в одном столбце, чтобы позволить конечному пользователю редактировать ячейки в таблице.Код в этом разделе является примером осей ButtonDownFcn срабатывает при щелчке конечного пользователя по осям.

function axes1_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to axes1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pt = get(hObject,'CurrentPoint')
Примечание
Большинство функций печати MATLAB очищают оси и сбрасывают ряд свойств осей, включая ButtonDownFcn, перед построением графика данных. Чтобы создать интерфейс, позволяющий конечному пользователю выводить данные на печать в интерактивном режиме, рассмотрите возможность предоставления компонента, например, кнопки для управления печатью. Функции печати не влияют на свойства таких компонентов. Если необходимо использовать оси ButtonDownFcn для печати данных, а затем использовать такие функции, как line, patch, и surface.