0

我正在尝试从我用 GUIDE 组成的 GUI 填充弹出菜单。我这样做如下:

TestFiles = dir([pwd '/test/*.txt']);
TestList = [];

for i = 1:length(TestFiles)
    filename = TestFiles(i).name;
    TestList = [TestList filename];
end

set(handles.popup_test,'string',TestList);

我在popup_test_CreateFcn方法中这样做(虽然我不确定这是正确的地方)。

尝试启动 GUI 时,我不断收到以下信息:

??? Attempt to reference field of non-structure array.

Error in ==> init>popup_test_CreateFcn at 101
set(handles.popup_test,'string',TestList);

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

Error in ==> init at 19
    gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)init('popup_test_CreateFcn',hObject,eventdata,guidata(hObject))


??? Error using ==> struct2handle
Error while evaluating uicontrol CreateFcn

所以由于某种原因,该set()方法不允许我用 TestList 填充弹出菜单。

有什么想法吗?

提前致谢。

4

1 回答 1

1

请注意,当您运行程序时,首先调用的函数是"create functions"

所以当你在set(handles.popup_test,'string',TestList);里面做popup_test_CreateFcn的时候,函数不知道是什么,handles因为它只有在"opening function". (如果您尝试在其中打印它,"create functions"它将是空的)。

你可以在这个函数里面做这样的事情:

handles.popup_test=hObject;  %pass handles the popup menu object
guidata(hObject, handles);

在打开功能中XXXX_OpeningFcn(hObject, eventdata, handles, varargin),您可以添加:

%...define TestList and other things you need
set(handles.popup_test,'string',TestList);
于 2012-12-14T13:51:20.063 回答