2012-06-18 53 views
6

我想要创建一个选项卡式GUI,其中第一个选项卡用于读取输入,然后输入显示在GUI上。用户应该能够从GUI中选择数据,然后将其作为算法的输入。用户也可以在另一个选项卡中为algortihm选择参数。在第三个标签中,用户可以看到生成的图。如何在MatLab中创建选项卡式GUI?

如何以编程方式或使用GUIDE在MatLab中创建选项卡式GUI?

+2

http://stackoverflow.com/questions/9859739/create-tabs-in-a-matlab-gui –

回答

10

下面是使用半记录功能UITAB创建标签一个简单的例子:

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 

tab1 tab2 tab3

+0

您好银行,非常感谢它帮了我很多。 –

+0

这很出色。非常感谢你提供这个例子! –

0

您也可以从一个GUIDE创建GUI选项卡的帮助下我写的Matlab File Exchange可用的实用程序。

用法相当简单:

  1. 创建标签的窗格设置选项卡?在哪里?是任何字母或数字(例如TabA)。此主窗格应留空并确定选项卡组(uitabgroup)的大小和位置。
  2. 使用以主窗格名称开头的标签名称创建其他窗格。所有其他控件应添加到这些窗格中。
  3. 在指南生成的函数xxx_OpeningFcn添加以下:

    handles.tabManager = TabManager(hObject);

附加窗格的位置并不重要,但它通常是比较容易,如果他们是在相同的位置,主窗格编辑的GUI。即使通过使用“指南”弹出式菜单中的“发送回”命令循环显示窗格,也可以编辑窗格。

Tab Group Place holderMain Tab Supplementary TabResulting GUI