Сохраните или получите данные пользовательского интерфейса
guidata (object_handle, данные)
данные = guidata (object_handle)
guidata(object_handle,data) хранит переменный data объектом, заданным object_handle. Если object_handle не является фигурой, то родительская фигура объекта используется. data может быть любой переменной MATLAB®, но обычно является структурой, которая позволяет вам добавить новые поля как требуется.
guidata может управлять только одной переменной в любое время. Последующие вызовы guidata(object_handle,data) перезаписывают ранее сохраненный data.
GUIDE использует guidata, чтобы сохранить и поддержать структуру handles. В файле кода GUIDE не перезаписывайте структуру handles, или ваша программа больше не будет работать. Если необходимо хранить другие данные, можно сделать так путем добавления новых полей к структуре handles.
data = guidata(object_handle) возвращает ранее хранившие данные или пустую матрицу, если ничто не сохранено.
Изменить данные, управляемые guidata:
Получите копию данных с командой data = guidata(object_handle).
Внесите желаемые изменения в data.
Сохраните измененную версию data с командой guidata(object_handle,data).
guidata предоставляет разработчикам приложений удобный интерфейс к данным приложения фигуры:
Вы не должны создать и поддержать трудно закодированное имя свойства данных приложения всюду по вашему исходному коду.
Можно получить доступ к данным из стандартной программы обратного вызова локальной функции использование указателя компонента (который возвращен gcbo), не будучи должен найти указатель фигуры.
Если вы не используете GUIDE, guidata особенно полезен в сочетании с guihandles, который создает структуру, содержащую все компоненты в пользовательском интерфейсе.
Этот пример вызывает guidata, чтобы сохранить структуру, содержащую данные приложения фигуры из раздела инициализации файла кода приложения. Первый раздел показывает, как сделать это в программируемом пользовательском интерфейсе. Второй раздел показывает, как код отличается, когда вы используете GUIDE, чтобы создать файл шаблона кода. GUIDE обеспечивает структуру handles в качестве аргумента ко всем обратным вызовам локальной функции, таким образом, вы не должны вызывать guidata, чтобы получить его. Действительно, однако, необходимо вызвать guidata, чтобы сохранить изменения, которые вы вносите в структуру.
Вызывание функции guihandles создает структуру, в которую ваш код помещает дополнительные данные. Это содержит все указатели, используемые фигурой в то время, когда это называется, генерируя имена полей на основе свойства Tag каждого объекта.
% Create figure
figure_handle = figure('Toolbar','none');
% create structure of handles
myhandles = guihandles(figure_handle);
% Add some additional data as a new field called numberOfErrors
myhandles.numberOfErrors = 0;
% Save the structure
guidata(figure_handle,myhandles) Можно вспомнить данные из локальной функции обратного вызова, изменить ее, и затем заменить структуру в фигуре:
function My_Callback() % ... % Get the structure using guidata in the local function myhandles = guidata(gcbo); % Modify the value of your counter myhandles.numberOfErrors = myhandles.numberOfErrors + 1; % Save the change you made to the structure guidata(gcbo,myhandles)
При использовании GUIDE, вы не должны вызывать guihandles, чтобы создать структуру. Можно добавить собственные данные к структуре handles. Например, этот код добавляет поле, numberOfErrors, к структуре:
% --- Executes just before simple_gui_tab is made visible. function my_GUIDE_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_gui_tab (see VARARGIN) % ... % add some additional data as a new field called numberOfErrors handles.numberOfErrors = 0; % Save the change you made to the structure guidata(hObject,handles)
hObject вместо gcbo, чтобы относиться к объекту, обратный вызов которого выполняется.Предположим, что необходимо было получить доступ к полю numberOfErrors в обратном вызове кнопки. Ваш код обратного вызова теперь выглядит примерно так:
% --- Executes on button press in pushbutton1. function my_GUIDE_GUI_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) % ... % No need to call guidata to obtain a structure; % it is provided by GUIDE via the handles argument handles.numberOfErrors = handles.numberOfErrors + 1; % save the changes to the structure guidata(hObject,handles)
getappdata | gUIDE | guihandles | setappdata