Пользовательский интерфейс и графические компоненты имеют определенные свойства, которые можно сопоставить с определенными функциями обратного вызова. Каждое из этих свойств соответствует определенному пользовательскому действию. Например, uicontrol имеет свойство под названием Callback
. Можно установить значение этого свойства быть указателем на функцию обратного вызова, анонимную функцию или вектор символа, содержащий выражение MATLAB®. Установка этого свойства заставляет ваше приложение ответить, когда пользователь взаимодействует с uicontrol. Если свойство Callback
не имеет никакого заданного значения, то ничего не происходит, когда пользователь взаимодействует с uicontrol.
Эта таблица приводит свойства обратного вызова, которые доступны, пользовательские действия, которые инициировали функцию обратного вызова, и наиболее распространенный пользовательский интерфейс и графические компоненты, которые используют их.
Свойство обратного вызова | Пользовательское действие | Компоненты, которые используют это свойство |
---|---|---|
'ButtonDownFcn' | Конечный пользователь нажимает кнопку мыши, в то время как указатель находится на компоненте или фигуре. | |
'callback' | Конечный пользователь инициировал компонент. Например: выбор пункта меню, перемещение ползунка или нажатие кнопки. | |
CellEditCallback | Конечный пользователь редактирует значение в таблице, ячейки которой доступны для редактирования. | |
CellSelectionCallback | Конечный пользователь выбирает ячейки в таблице. | |
ClickedCallback | Конечный пользователь кликает по инструменту инструмента или переключателя нажатия с левой кнопкой мыши. | |
CloseRequestFcn | Завершения фигуры. | |
CreateFcn | Обратный вызов выполняется, когда MATLAB создает объект, но прежде чем это будет отображено. |
|
DeleteFcn | Обратный вызов выполняется непосредственно перед тем, как MATLAB удаляет фигуру. |
|
KeyPressFcn | Конечный пользователь нажимает клавишу на клавиатуре, в то время как указатель находится на объекте. | |
| Конечный пользователь выпускает клавишу на клавиатуре, в то время как указатель находится на объекте. | |
OffCallback | Выполняется, когда | |
OnCallback | Выполняется, когда | |
| Конечный пользователь изменяет размер группы кнопок, фигуры или панели, свойством | |
'SelectionChangedFcn' | Конечный пользователь устанавливает различный переключатель или кнопку-переключатель в группе кнопок. | |
WindowButtonDownFcn | Конечный пользователь нажимает кнопку мыши, в то время как указатель находится в окне фигуры. | |
WindowButtonMotionFcn | Конечный пользователь перемещает указатель в рамках окна фигуры. | |
WindowButtonUpFcn | Конечный пользователь отпускает кнопку мыши. | |
WindowKeyPressFcn | Конечный пользователь нажимает клавишу, в то время как указатель находится на фигуре или любом из его дочерних объектов. | |
WindowKeyReleaseFcn | Конечный пользователь отпускает клавишу, в то время как указатель находится на фигуре или любом из его дочерних объектов. | |
| Конечный пользователь крутит колесо мыши, в то время как указатель находится на фигуре. |
После того, как вы добавляете uicontrol
, uimenu
или компонент uicontextmenu
к вашему пользовательскому интерфейсу, но прежде чем вы сохраните его, GUIDE заполняет свойство Callback
со значением, %automatic
. Это значение указывает, что GUIDE сгенерирует имя для функции обратного вызова.
Когда вы сохраняете свой пользовательский интерфейс, GUIDE добавляет пустое определение функции обратного вызова вашему файлу кода, и это устанавливает свойство Callback
управления быть анонимной функцией. Этим функциональным определением является пример сгенерированной GUIDE функции обратного вызова для кнопки.
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) end
myui
, то GUIDE устанавливает свойство Callback
кнопки на следующее значение:@(hObject,eventdata)myui('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
pushbutton1_Callback
. Эта анонимная функция имеет четыре входных параметра. Первый аргумент является именем функции обратного вызова. Последние три аргумента обеспечиваются MATLAB и обсуждены в разделе, Синтаксисе Обратного вызова GUIDE.GUIDE автоматически не генерирует функции обратного вызова для других компонентов UI, таких как таблицы, панели или группы кнопок. Если вы хотите, чтобы какой-либо из этих компонентов выполнил функцию обратного вызова, то необходимо создать обратный вызов путем щелчка правой кнопкой по компоненту в размещении и выбора элемента в соответствии с Просмотром обратных вызовов в контекстном меню.
Все обратные вызовы должны принять по крайней мере три входных параметра:
Компонент hObject
— The UI, который инициировал обратный вызов.
данные о событиях
Переменная, которая содержит подробную информацию об определенной мыши или действиях клавиатуры.
handles
— struct
, который содержит все объекты в пользовательском интерфейсе. GUIDE использует функцию guidata
, чтобы сохранить и поддержать эту структуру.
Для функции обратного вызова, чтобы принять дополнительные аргументы, необходимо поместить дополнительные аргументы в конце списка аргументов в функциональном определении.
Аргумент eventdata
предоставляет подробную информацию определенным функциям обратного вызова. Например, если конечный пользователь инициировал KeyPressFcn
, то MATLAB предоставляет информацию относительно определенного ключа (или комбинация ключей) что нажатый конечный пользователь. Если eventdata
не доступен функции обратного вызова, то MATLAB передает его как пустой массив. В следующей таблице перечислены обратные вызовы и компоненты то использование eventdata
.
Имя свойства обратного вызова | Компонент |
---|---|
WindowKeyPressFcn WindowKeyReleaseFcn WindowScrollWheel | фигура |
KeyPressFcn | figure , uicontrol , uitable |
KeyReleaseFcn | figure , uicontrol , uitable |
'SelectionChangedFcn' | uibuttongroup |
CellEditCallback CellSelectionCallback | uitable |
GUIDE создает имя функции обратного вызова путем комбинирования свойства Tag
компонента и имени свойства обратного вызова. Если вы изменяете значение Tag
компонента, то GUIDE изменяет название обратного вызова в следующий раз, когда вы сохраняете пользовательский интерфейс.
Если вы решаете изменить значение Tag
после сохранения пользовательского интерфейса, то GUIDE обновляет следующие элементы (принимающий, что все компоненты имеют уникальные значения Tag
).
Определение функции обратного вызова компонента
Значение свойства обратного вызова компонента
Ссылки в файле кода к соответствующему полю в структуре handles
Переименовать функцию обратного вызова, не изменяя свойство Tag
компонента:
Поменяйте имя в определении функции обратного вызова.
Обновите свойство обратного вызова компонента путем изменения первого аргумента, переданного анонимной функции. Например, исходное свойство обратного вызова для кнопки может выглядеть так:
@(hObject,eventdata)myui('pushbutton1_Callback',... hObject,eventdata,guidata(hObject))
В этом примере необходимо измениться, 'pushbutton1_Callback'
к новому имени функции.
Измените все другие ссылки на старое имя функции к новому имени функции в файле кода.
Можно удалить функцию обратного вызова когда это необходимо, чтобы удалить или изменить функцию, которая выполняется, когда конечный пользователь выполняет определенное действие. Удалить функцию обратного вызова:
Ищите и замените все экземпляры, которые относятся к функции обратного вызова в вашем коде.
Откройте пользовательский интерфейс в GUIDE и замените все экземпляры, которые относятся к функции обратного вызова в Инспекторе свойств.
Удалите функцию обратного вызова.