【问题标题】:MATLAB GUI using GUIDE: List Box issue使用 GUIDE 的 MATLAB GUI:列表框问题
【发布时间】:2010-10-21 19:02:32
【问题描述】:

我正在创建一个包含两个 uicontrol 对象的 MATLAB GUI:一个按钮和一个列表框。我使用按钮将文件名添加到列表框中。当我从 m 文件运行 GUI 时,它工作正常。仅当我运行 .fig 文件本身时才会出现问题。这是回调代码和错误:

function add_file_Callback(hObject, eventdata, handles)
% hObject    handle to add_file (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%gets input file(s) from user

[input_file,pathname] = uigetfile( ...
       {'*.jpg;*.tif;*.png;*.gif;*.bmp;*.pgm'}, ...
        'Select files', ... 
        'MultiSelect', 'on');

%if file selection is cancelled, pathname should be zero
%and nothing should happen
if pathname == 0
    return
end

%gets the current data file names inside the listbox

inputFileNames = get(handles.img_list,'String');

%if they only select one file, then the data will not be a cell
%if more than one file selected at once,
%then the data is stored inside a cell
if iscell(input_file) == 0

    %add the most recent data file selected to the cell containing
    %all the data file names
    inputFileNames{end+1} = input_file;

%else, data will be in cell format
else
    %stores full file path into inputFileNames
    for n = 1:length(input_file)
        %notice the use of {}, because we are dealing with a cell here!
        inputFileNames{end+1} = input_file{n};
    end
end

%updates the gui to display all filenames in the listbox
set(handles.img_list,'String',inputFileNames);

%make sure first file is always selected so it doesn't go out of range
%the GUI will break if this value is out of range
set(handles.img_list,'Value',1);

% Update handles structure
guidata(hObject, handles);

错误:

Error in ==> Texture_Classification_GUI>add_file_Callback at 154
inputFileNames = get(handles.img_list,'String');

Error in ==> gui_mainfcn at 95
        feval(varargin{:});

Error in ==> Texture_Classification_GUI at 42
    gui_mainfcn(gui_State, varargin{:});

??? Error using ==> Texture_Classification_GUI('add_file_Callback',gcbo,[],guidata(gcbo))
Attempt to reference field of non-structure array.

??? Error while evaluating uicontrol Callback

任何帮助将不胜感激。

【问题讨论】:

  • 补充:我的想法是List Box在使用前需要初始化,但我不知道怎么做。

标签: matlab user-interface button listbox matlab-guide


【解决方案1】:

运行 fig 文件本身”是什么意思? GUIDE 创建两个文件:一个m-file 和一个.fig 文件(例如my_guide_app.mmy_guide_app.fig)。你是用openfig 之类的东西打开.fig 吗?这不起作用,因为m-file 需要设置创建句柄结构的数字打开函数。因此,要运行使用 GUIDE 制作的 GUI,需要调用 m-file 来启动应用程序,而不仅仅是打开 .fig 文件。

如果我误解了您关于打开 .fig 文件的说法,请告诉我,因为可能还有其他问题。

【讨论】:

    【解决方案2】:

    我猜需要在 GUIDE 中初始化列表框。如果你用 1 个选项初始化它,它将是一个 char 数组,如果你用超过 1 个选项初始化它,它将是一个元胞数组。因此,您也必须在那里进行类似的检查(iscell);然后添加新选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多