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

Этот пример показывает, как исследовать и запустить предварительно созданное приложение 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, eventdata и 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

Похожие темы