Приложение с интерактивным списком в GUIDE

Примечание

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

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

В этом примере показано, как исследовать и запустить предварительно созданное приложение GUIDE. Приложение содержит поле списка, которое отображает файлы в конкретной папке. Когда вы дважды кликаете элемент в списке, MATLAB открывает элемент.

Открытие и запуск примера

Откройте приложение в GUIDE и нажмите Run Figure (зеленая кнопка воспроизведения), чтобы запустить его.

В качестве альтернативы можно вызвать lbox2 функция в Командном окне с 'dir' аргумент пары "имя-значение". Аргумент пары "имя-значение" позволяет вам перечислять содержимое любой папки. Например, это списки команд файлы в папке C:\ в системе Windows®:

lbox2('dir','C:\')

Примечание: Прежде чем можно вызвать lbox2 в Командном окне необходимо сохранить файлы GUIDE в папке на пути MATLAB®. Чтобы сохранить файлы, выберите File> Save As in GUIDE.

Исследование кода размещения и обратного вызова

  1. В GUIDE нажмите кнопку Editor, чтобы просмотреть код.

  2. Около верхней части окна Editor используйте кнопку Go To, чтобы перейти к функциям, обсужденным ниже.

lbox2_OpeningFcn

Функция обратного вызова lbox2_OpeningFcn выполняется непосредственно перед тем, как поле списка появляется в пользовательском интерфейсе впервые. Следующие операторы определяют, задал ли пользователь параметр пути к lbox2 функция.

if nargin == 3,
    initial_dir = pwd;
elseif nargin > 4
    if strcmpi(varargin{1},'dir')
        if exist(varargin{2},'dir')
            initial_dir = varargin{2};
        else
            errordlg('Input must be a valid directory','Input Argument Error!')
            return
        end
    else
        errordlg('Unrecognized input argument','Input Argument Error!');
        return;
    end
end
Если nargin==3, затем единственные входные параметры к lbox2_OpeningFcn hObjectДанные о событиях, и handles. Поэтому пользователь не задавал путь, когда они вызвали lbox2, таким образом, поле списка показывает содержимое текущей папки. Если nargin>4, затем varargin входной параметр содержит два дополнительных элемента (предполагающий, что пользователь действительно задавал путь). Таким образом, последующий if проверка операторов, чтобы видеть, допустим ли путь.

listbox1_callback

Функция обратного вызова listbox1_callback выполняется, когда пользователь кликает по элементу поля списка. Этот оператор, около начала функции, возвращает true каждый раз, когда пользователь дважды кликает элемент в поле списка:

if strcmp(get(handles.figure1,'SelectionType'),'open')
Если тем условием является true, затем listbox1_callback определяет, какой элемент поля списка пользователь выбрал:
index_selected = get(handles.listbox1,'Value');
file_list = get(handles.listbox1,'String');
filename = file_list{index_selected};
Остальная часть кода в этой функции обратного вызова определяет, как открыть выбранный пункт на основе того, является ли элемент папкой, файлом FIG или другим типом файла:
    if  handles.is_dir(handles.sorted_index(index_selected))
        cd (filename)
        load_listbox(pwd,handles)
    else
        [path,name,ext] = fileparts(filename);
        switch ext
            case '.fig'
                guide (filename)
            otherwise
                try
                    open(filename)
                catch ex
                    errordlg(...
                      ex.getReport('basic'),'File Type Error','modal')
                end
        end
    end

Похожие темы