exponenta event banner

guidata

Хранить или извлекать данные пользовательского интерфейса

Используйте эту функцию только с GUIDE или с приложениями, созданными с помощью figure функция.

Описание

пример

guidata(obj,data) сохраняет указанные данные в данных приложения obj если это фигура, или родительская фигура obj если это другой компонент. Дополнительные сведения см. в разделе Как Guidata управляет данными.

пример

data = guidata(obj) возвращает ранее сохраненные данные или пустую матрицу, если ничего не хранится.

Примеры

свернуть все

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

Сначала создайте файл программы с именем progCounter.m. В файле программы:

  • Создайте фигуру.

  • Создайте структуру с нулевым значением поля.

  • Сохраните данные на рисунке.

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

Запустите программу и щелкните внутри рисунка. Обновленные данные появятся в окне команд.

f = figure;
data.numberOfClicks = 0; 
guidata(f,data)
f.ButtonDownFcn = @My_Callback;

function My_Callback(src,event)
data = guidata(src);
data.numberOfClicks = data.numberOfClicks + 1;
guidata(src,data)
data
end
data = 

  struct with fields:

    numberOfClicks: 1

Создайте кнопку в GUIDE и сохраните данные и получите доступ к ним при нажатии кнопки. Для этого сначала добавьте поле в handles структура и использование guidata для его обновления и управления им. (Убедитесь, что данные добавлены в handles вместо того, чтобы перезаписывать его. Дополнительные сведения см. в разделе Как GUIDE использует руководство.) Затем настройте обратный вызов, который использует guidata для доступа и хранения данных при нажатии кнопки.

Для этого сначала откройте GUIDE и добавьте кнопку в область компоновки. Затем щелкните значок «Редактор», чтобы открыть файл программы для редактирования. Найти OpeningFcn который был автоматически создан GUIDE и добавлен в новое поле handles названный numberOfClicks.

% --- Executes just before countClicks is made visible.
function countClicks_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 countClicks (see VARARGIN)

% Choose default command line output for countClicks
handles.output = hObject;

handles.numberOfClicks = 0;

% Update handles structure
guidata(hObject, handles);

Затем найдите функцию обратного вызова кнопки, созданную GUIDE. Программирование для доступа к данным, хранящимся в handles, измените его, сохраните измененные данные в структуре и отобразите новые данные в окне команд. Обратите внимание, что в GUIDE вы используете hObject, вместо src, чтобы обратиться к объекту, обратный вызов которого выполняется.

% --- Executes on button press in pushbutton1.
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)

handles.numberOfClicks = handles.numberOfClicks + 1;
guidata(hObject,handles)
data = guidata(hObject)
>> countClicks

data = 

  struct with fields:

           figure1: [1×1 Figure]
       pushbutton1: [1×1 UIControl]
            output: [1×1 Figure]
    numberOfClicks: 1

Входные аргументы

свернуть все

Графический объект, например, Figure, Axes, Illustration, или объект пользовательского интерфейса. Используйте этот аргумент, чтобы указать фигуру, которая хранит data. Если указанный объект не является фигурой, то родительская фигура объекта будет использоваться для хранения data.

Данные для хранения на рисунке, указанные как любые данные MATLAB. Как правило, data указывается как структура, которая позволяет добавлять новые поля по мере необходимости. Например, создайте структуру данных с полем с именем Category, сохраните данные из поля в структуре и просмотрите сохраненные данные в окне команд:

data.Category = 'Projected Growth';
guidata(gcf,data);
data = guidata(gcf)

Алгоритмы

свернуть все

Как guidata Управление данными

guidata может в любое время управлять только одной переменной на родительскую фигуру. Последующие вызовы guidata(obj,data) перезаписать ранее сохраненные данные. Сохранение дополнительных данных путем создания структуры с несколькими полями.

Использование GUIDE guidata

Использование GUIDE guidata для хранения и ведения вызванной структуры handles. В файле кода GUIDE не перезаписывайте handles структура или ваша программа больше не будет работать. Если необходимо сохранить другие данные, можно добавить новые поля в handles структура.

См. также

| | | |

Представлен до R2006a