Примечание
Среда 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'
в Командном окне. Следующая строка получает использование окна UI 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. Сопоставьте эту функцию с Callback
uicontrol свойство заставить его выполниться, когда конечный пользователь вводит в текстовом поле.
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.
Пример, Приложение с интерактивным списком в 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, то щелкните правой кнопкой по панели по размещению и выберите View Callbacks> ButtonDownFcn, чтобы создать функцию обратного вызова.
Этот код является примером 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 UI не могут быть изменены, но можно заменить это поведение путем выбора Tools> GUI Options и установка Resize behavior к Proportional.
Когда окно UI изменяемого размера, положение компонентов в окне настраивают, когда пользователь изменяет размер его. Если у вас будет панель в вашем пользовательском интерфейсе, то размер панели изменится с размером окна. Используйте 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, the copy_menu_item_Callback
функционируйте отображает текст, 'Copy menu item selected'
, в командном окне MATLAB.
Когда конечный пользователь кликает и отпускает кнопку мыши на пункте меню To File, tofile_menu_item_Callback
функционируйте отображает диалоговое окно, которое предлагает конечному пользователю выбирать папку назначения и имя файла.
tofile_menu_item_Callback
вызовы функции uiputfile
функционируйте, чтобы предложить конечному пользователю предоставлять целевой файл и папку. Если вы хотите создать пункт меню, который предлагает пользователю существующий файл, например, если ваш пользовательский интерфейс имеет пункт меню Open File, то используйте 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
.