弹出菜单的动态种群 - MATLAB

时间:2013-06-20 16:02:44

标签: matlab user-interface popup matlab-guide matlab-uitable

另一个GUIDE问题。

我用弹出菜单创建了一个GUIDE图。调用图形时,动态确定菜单的元素。示例:应调用myGUI(data, popupNames),然后使用popupNames中包含的字符串来标记选项。我可以在弹出菜单的回调中执行此操作。但是,这意味着在我实际按下弹出菜单并选择第一个(非常空)选项之前,弹出窗口不会被填充。

我的问题是如何通过create function(或任何其他函数)动态填充它。我还需要使用uitable做同样的事情(填充行名和列名,尽管这个名称不是动态的)

我失败的尝试让我意识到我无法访问创建函数中的句柄数据,如下所示:

% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
handles.popupNames = varargin{2};
set(hObject, 'String', {handles.popupNames{1:end}});

% --- Executes during object creation, after setting all properties.
function uitable1_CreateFcn(hObject, eventdata, handles)

handles.data = varargin{1};

t = uitable(handles.uitable1);
set(t,'Data',handles.data{1})
set(t, 'ColumnName', {'a', 'b', 'c'})
set(t,'RowName', {'1', '2', '3'})

1 个答案:

答案 0 :(得分:4)

GUIDE会生成myGui_OpeningFcn(hObject, eventdata, handles, varargin)。在那里,您可以初始化字符串:

function myGui_OpeningFcn(hObject, eventdata, handles, varargin)

    handles.output = hObject;

    set(handles.popupmenu1, 'String', varargin{2});

    set(handles.uitable1, 'Data', varargin{1});
    set(handles.uitable1, 'ColumnName', {'a' 'b' 'c'});
    set(handles.uitable1, 'RowName', {'1' '2' '3'});

    guidata(hObject, handles);
end

请注意guidata的使用,它使用新的handles更新GUI的句柄结构。如果您在更改guidata结构时未致电handles,则您所做的更改将不会得到反映。