Запись обратных вызовов в GUIDE

Примечание

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

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

Обратные вызовы для различных пользовательских действий

Пользовательский интерфейс и графические компоненты имеют определенные свойства, которые можно сопоставить с определенными функциями обратного вызова. Каждое из этих свойств соответствует определенному пользовательскому действию. Например, uicontrol имеет свойство под названием Callback. Можно установить значение этого свойства быть указателем на функцию обратного вызова, анонимную функцию или вектор символов, содержащий выражение MATLAB. Установка этого свойства заставляет ваше приложение ответить, когда пользователь взаимодействует с uicontrol. Если Callback свойство не имеет никакого заданного значения, затем ничего не происходит, когда пользователь взаимодействует с uicontrol.

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

Свойство коллбэка

Пользовательское действие

Компоненты, которые используют это свойство

ButtonDownFcn

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

axesфигураuibuttongroupuicontroluipaneluitable,

Callback

Конечный пользователь инициировал компонент. Например: выбор пункта меню, перемещение ползунка или нажатие кнопки.

uicontextmenuuicontroluimenu

CellEditCallback

Конечный пользователь редактирует значение в таблице, ячейки которой доступны для редактирования.

uitable

CellSelectionCallback

Конечный пользователь выбирает ячейки в таблице.

uitable

ClickedCallback

Конечный пользователь кликает по инструменту инструмента или переключателя нажатия с левой кнопкой мыши.

uitoggletooluipushtool

CloseRequestFcn

Завершения фигуры.

figure

CreateFcn

Коллбэк выполняется, когда MATLAB создает объект, но прежде чем это будет отображено.

axesфигураuibuttongroupUIContextMenu uicontroluimenuuipushtooluipaneluitableuitoggletooluitoolbar

DeleteFcn

Коллбэк выполняется непосредственно перед тем, как MATLAB удаляет фигуру.

axesфигураuibuttongroupUIContextMenu uicontroluimenuuipushtooluipaneluitableuitoggletooluitoolbar

KeyPressFcn

Конечный пользователь нажимает клавишу на клавиатуре, в то время как указатель находится на объекте.

figureuicontroluipaneluipushtooluitableuitoolbar

KeyReleaseFcn

Конечный пользователь выпускает клавишу на клавиатуре, в то время как указатель находится на объекте.

figureuicontroluitable

OffCallback

Выполняется когда State из переключателя инструмент превращается в 'off'.

uitoggletool

OnCallback

Выполняется когда State из переключателя инструмент превращается в 'on'.

uitoggletool

SizeChangedFcn

Конечный пользователь изменяет размер группы кнопок, фигуры или панели чей Resize свойством является 'on'.

figureuipaneluibuttongroup

SelectionChangedFcn

Конечный пользователь устанавливает различный переключатель или кнопку-переключатель в группе кнопок.

uibuttongroup

WindowButtonDownFcn

Конечный пользователь нажимает кнопку мыши, в то время как указатель находится в окне рисунка.

figure

WindowButtonMotionFcn

Конечный пользователь перемещает указатель в рамках окна рисунка.

figure

WindowButtonUpFcn

Конечный пользователь отпускает кнопку мыши.

figure

WindowKeyPressFcn

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

figure

WindowKeyReleaseFcn

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

figure

WindowScrollWheelFcn

Конечный пользователь крутит колесо мыши, в то время как указатель находится на фигуре.

figure

Сгенерированные GUIDE функции обратного вызова и значения свойств

Как GUIDE управляет функциями обратного вызова и свойствами

После того, как вы добавляете uicontroluimenu, или 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 автоматически не генерирует функции обратного вызова для других компонентов пользовательского интерфейса, таких как таблицы, панели или группы кнопок. Если вы хотите, чтобы какой-либо из этих компонентов выполнил функцию обратного вызова, то необходимо создать коллбэк путем щелчка правой кнопкой по компоненту в размещении и выбора элемента под View Callbacks в контекстном меню.

Синтаксис обратного вызова GUIDE

Все коллбэки должны принять по крайней мере три входных параметра:

  • hObject — Компонент пользовательского интерфейса, который инициировал коллбэк.

  • eventdata — Переменная, которая содержит подробную информацию об определенной мыши или действиях клавиатуры.

  • handlesstruct это содержит все объекты в пользовательском интерфейсе. GUIDE использует guidata функционируйте, чтобы сохранить и обеспечить эту структуру.

Для функции обратного вызова, чтобы принять дополнительные аргументы, необходимо поместить дополнительные аргументы в конце списка аргументов в функциональном определении.

Аргумент EventData

eventdata аргумент предоставляет подробную информацию определенным функциям обратного вызова. Например, если конечный пользователь инициировал KeyPressFcn, затем MATLAB предоставляет информацию относительно определенного ключа (или комбинация ключей) что нажатый конечный пользователь. Если eventdata не доступно для функции обратного вызова, затем MATLAB передает ее как пустой массив. В следующей таблице перечислены коллбэки и компоненты то использование eventdata.

Имя свойства коллбэкаКомпонент
WindowKeyPressFcn
WindowKeyReleaseFcn
WindowScrollWheel
figure
KeyPressFcnfigureuicontroluitable
KeyReleaseFcnfigureuicontroluitable
SelectionChangedFcnuibuttongroup
CellEditCallback
CellSelectionCallback
uitable

Переименование и удаление сгенерированных GUIDE обратных вызовов

Переименование обратных вызовов

GUIDE создает имя функции обратного вызова путем объединения Tag компонента свойство и имя свойства коллбэка. Если вы изменяете Tag компонента значение, затем GUIDE изменяет название коллбэка в следующий раз, когда вы сохраняете пользовательский интерфейс.

Если вы решаете изменить Tag значение после сохранения пользовательского интерфейса, затем GUIDE обновляет следующие элементы (принимающий, что все компоненты имеют уникальный Tag значения.

  • Определение функции обратного вызова компонента

  • Значение свойства коллбэка компонента

  • Ссылки в файле кода к соответствующему полю в handles структура

Переименовать функцию обратного вызова, не изменяя Tag компонента свойство:

  1. Поменяйте имя в определении функции обратного вызова.

  2. Обновитесь свойство коллбэка компонента путем изменения первого аргумента передало анонимной функции. Например, исходное свойство коллбэка для кнопки может выглядеть так:

    @(hObject,eventdata)myui('pushbutton1_Callback',...
                               hObject,eventdata,guidata(hObject))

    В этом примере необходимо измениться, 'pushbutton1_Callback' к новому имени функции.

  3. Измените все другие ссылки на старое имя функции к новому имени функции в файле кода.

Удаление обратных вызовов

Можно удалить функцию обратного вызова, когда это необходимо, чтобы удалить или изменить функцию, которая выполняется, когда конечный пользователь выполняет определенное действие. Удалить функцию обратного вызова:

  1. Ищите и замените все экземпляры, которые относятся к функции обратного вызова в вашем коде.

  2. Откройте пользовательский интерфейс в GUIDE и замените все экземпляры, которые относятся к функции обратного вызова в Property Inspector.

  3. Удалите функцию обратного вызова.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте