另一个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'})
答案 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
,则您所做的更改将不会得到反映。