I want to create a tabbed GUI in which first tab is for reading input, then the input is displayed on the GUI. The User should be able to select the data from GUI and then give
You can also create tabs from a GUIDE created GUI with the help of a utility available from Matlab File Exchange that I wrote.
The usage is fairly simple:
In the Guide generated function xxx_OpeningFcn add the following:
handles.tabManager = TabManager( hObject );
The location of the additional panes is not important but it is generally easier to edit the GUI if they are in the same location as the main pane. You can edit the panes even if they are overlaid by cycling through the panes with the "Send to back" command from the Guide pop up menu.
Here is a simple example using the semi-documented function UITAB to create tabs:
function tabbedGUI()
%# create tabbed GUI
hFig = figure('Menubar','none');
s = warning('off', 'MATLAB:uitabgroup:OldVersion');
hTabGroup = uitabgroup('Parent',hFig);
warning(s);
hTabs(1) = uitab('Parent',hTabGroup, 'Title','Data');
hTabs(2) = uitab('Parent',hTabGroup, 'Title','Params');
hTabs(3) = uitab('Parent',hTabGroup, 'Title','Plot');
set(hTabGroup, 'SelectedTab',hTabs(1));
%# populate tabs with UI components
uicontrol('Style','pushbutton', 'String','Load data...', ...
'Parent',hTabs(1), 'Callback',@loadButtonCallback);
uicontrol('Style','popupmenu', 'String','r|g|b', ...
'Parent',hTabs(2), 'Callback',@popupCallback);
hAx = axes('Parent',hTabs(3));
hLine = plot(NaN, NaN, 'Parent',hAx, 'Color','r');
%# button callback
function loadButtonCallback(src,evt)
%# load data
[fName,pName] = uigetfile('*.mat', 'Load data');
if pName == 0, return; end
data = load(fullfile(pName,fName), '-mat', 'X');
%# plot
set(hLine, 'XData',data.X(:,1), 'YData',data.X(:,2));
%# swithc to plot tab
set(hTabGroup, 'SelectedTab',hTabs(3));
drawnow
end
%# drop-down menu callback
function popupCallback(src,evt)
%# update plot color
val = get(src,'Value');
clr = {'r' 'g' 'b'};
set(hLine, 'Color',clr{val})
%# swithc to plot tab
set(hTabGroup, 'SelectedTab',hTabs(3));
drawnow
end
end