【问题标题】:How do I create a tabbed GUI in MatLab?如何在 MatLab 中创建选项卡式 GUI?
【发布时间】:2012-06-20 12:34:49
【问题描述】:

我想创建一个选项卡式 GUI,其中第一个选项卡用于读取输入,然后输入显示在 GUI 上。用户应该能够从 GUI 中选择数据,然后作为算法的输入。用户也可以在另一个选项卡中选择算法的参数。在第三个选项卡中,用户可以看到结果图。

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

【问题讨论】:

标签: matlab user-interface tabs


【解决方案1】:

您还可以借助我编写的Matlab File Exchange 提供的实用程序从 GUIDE 创建的 GUI 创建选项卡。

用法相当简单:

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

    handles.tabManager = TabManager(hObject);

附加窗格的位置并不重要,但如果它们与主窗格位于同一位置,则通常更容易编辑 GUI。即使窗格被覆盖,您也可以通过使用“指南”弹出菜单中的“发送到后面”命令循环浏览窗格来编辑窗格。

【讨论】:

  • 您好,问个简单的问题:使用“发送到后面”选项是使用 GUIDE 创建选项卡式 gui 的唯一方法吗?如果我想在一个选项卡中添加一些东西并且我需要在图形编辑器中找到它,我正在考虑未来。对于许多标签,这个问题甚至更糟
  • @Shika93 - 不幸的是,这是我知道的唯一方法
【解决方案2】:

这是一个使用半文档化函数 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

【讨论】:

  • 您好 Amro,非常感谢它对我的帮助很大。
  • 这太棒了。非常感谢您提供此示例!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多