Инициализация компонентов пользовательского интерфейса в приложениях GUIDE

Открытие функции

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

Можно использовать вводную функцию, чтобы выполнить задачи инициализации, прежде чем у пользователя будет доступ к пользовательскому интерфейсу. Например, можно использовать его, чтобы создать данные или считать данные из внешнего источника. MATLAB® передает любые параметры командной строки вводной функции.

Функциональное именование и шаблон

GUIDE называет вводную функцию путем добавления _OpeningFcn к имени пользовательского интерфейса. Это - пример вводного шаблона функции, как это может появиться в файле кода myui.

% --- Executes just before myui is made visible.
function myui_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 myui (see VARARGIN)
 
% Choose default command line output for myui
handles.output = hObject;
 
% Update handles structure
guidata(hObject, handles);
 
% UIWAIT makes myui wait for user response (see UIRESUME)
% uiwait(handles.myui);

Входные параметры

Вводная функция имеет четыре входных параметра hObject, eventdata, handles и varargin. Первые три эквивалентны описанный в Синтаксисе Коллбэка GUIDE. последний аргумент, varargin, позволяет вам передать аргументы от командной строки до вводной функции. Вводная функция может принять меры с ними (например, установив значения свойств) и также сделать аргументы доступными для коллбэков путем добавления их в структуру handles.

Для получения дополнительной информации об использовании varargin смотрите страницу с описанием varargin и Количество Переменной Поддержки Входных параметров.

Передача Свойств объектов к Вводной Функции.  Можно передать пары "имя-значение" свойства как два последовательных параметра командной строки, когда вы запускаете свою программу. Если вы передаете пару "имя-значение", которая соответствует свойству фигуры, MATLAB устанавливает свойство автоматически. Например, my_gui('Color', 'Blue') выбирает цвет фона окна UI к синему.

Если вы хотите, чтобы ваша программа приняла входной параметр, который не является допустимым свойством фигуры, то ваш код должен распознать и обработать тот аргумент. В противном случае аргумент проигнорирован. Следующий пример от вводной функции для шаблона Modal Question Dialog, доступного от диалогового окна GUIDE Quick Start. Добавленный код открывает модальное диалоговое окно с сообщением, заданным из командной строки или другой программой, которая вызывает этого. Например, эта команда отображает текст, 'Do you want to exit?' на окне.

myui('String','Do you want to exit?')

Чтобы принять эту пару "имя-значение", необходимо настроить вводную функцию, потому что 'String' не является допустимым свойством фигуры. Файл шаблона Modal Question Dialog содержит код к, выполняет эти задачи:

  • Использует функцию nargin, чтобы определить количество заданных пользователями аргументов (которые не включают hObject, eventdata и handles),

  • Синтаксические анализы varargin, чтобы получить имя свойства / пары значения, преобразовывая каждое имя к нижнему регистру

  • Обрабатывает случай, где аргумент 'title' используется в качестве псевдонима для фигуры свойство Name

  • Обрабатывает случай 'string', присваивая следующее значение как свойство String к соответствующему статическому текстовому объекту

function modalgui_OpeningFcn(hObject, eventdata, handles, varargin)
.
.
.
% Insert custom Title and Text if specified by the user
% Hint: when choosing keywords, be sure they are not easily confused 
% with existing figure properties.  See the output of set(figure) for
% a list of figure properties.
if(nargin > 3)
    for index = 1:2:(nargin-3),
        if nargin-3==index, break, end
        switch lower(varargin{index})
         case 'title'
          set(hObject, 'Name', varargin{index+1});
         case 'string'
          set(handles.text1, 'String', varargin{index+1});
        end
    end
end
.
.
.
Циклы блока if через нечетные элементы проверки varargin имена свойства или псевдонимы и блоки case присваивают следующее (даже) элемент varargin как значение к соответствующему свойству фигуры или одному из его компонентов. Можно добавить больше случаев, чтобы обработать присвоения дополнительного свойства, которые вы хотите, чтобы вводная функция выполнила.

Начальный шаблон кода

Первоначально, шаблон функции ввода содержит эти строки кода:

  • handles.output = hObject добавляет новый элемент, output, к структуре handles и присваивает его значение входного параметра hObject, который является объектом фигуры.

  • guidata(hObject,handles) сохраняет структуру handles. Необходимо использовать функцию guidata, чтобы сохранить любые изменения, которые вы вносите в структуру handles. Не достаточно только установить значение поля handles.

  • uiwait(handles.myui), первоначально прокомментированный, выполнение программы блоков до uiresume, называется, или окно закрывается. Обратите внимание на то, что uiwait предоставляет пользовательский доступ к другим окнам MATLAB. Удалите символ комментария для этого оператора, если вы хотите, чтобы пользовательский интерфейс блокировался, когда это открывается.

Выходная функция

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

Функциональное именование и шаблон

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

% --- Outputs from this function are returned to the command line.
function varargout = myui_OutputFcn(hObject, eventdata,...
                     handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Get default command line output from handles structure
varargout{1} = handles.output;

Входные параметры

Выходная функция имеет три входных параметра: hObject, eventdata и handles. Они эквивалентны описанный в Синтаксисе Коллбэка GUIDE.

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

Выходная функция имеет один выходной аргумент, varargout, который это возвращает в командную строку. По умолчанию выходная функция присваивает handles.output varargout.

Можно изменить вывод путем принятия одних из этих мер:

  • Измените значение handles.output. Это может быть любое допустимое значение MATLAB включая массив структур или массив ячеек.

  • Добавьте выходные аргументы varargout. Аргумент varargout является массивом ячеек. Это может содержать любое количество выходных аргументов. По умолчанию GUIDE задает всего один выходной аргумент, handles.output. Чтобы задать дополнительный выходной аргумент, создайте новое поле в структуре handles и добавьте его в varargout с помощью команды, подобной

    varargout{2} = handles.second_output;

Похожие темы