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

Примечание

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

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

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

Вводная функция является первым коллбэком в каждом файле кода 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Данные о событиях, 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Данные о событиях, и 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Данные о событиях, и handles. Они эквивалентны описанный в Синтаксисе Коллбэка GUIDE.

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

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

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

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

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

    varargout{2} = handles.second_output;

Похожие темы

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