【发布时间】:2012-06-20 12:34:49
【问题描述】:
我想创建一个选项卡式 GUI,其中第一个选项卡用于读取输入,然后输入显示在 GUI 上。用户应该能够从 GUI 中选择数据,然后作为算法的输入。用户也可以在另一个选项卡中选择算法的参数。在第三个选项卡中,用户可以看到结果图。
如何在 MatLab 中以编程方式或使用 GUIDE 创建选项卡式 GUI?
【问题讨论】:
标签: matlab user-interface tabs
我想创建一个选项卡式 GUI,其中第一个选项卡用于读取输入,然后输入显示在 GUI 上。用户应该能够从 GUI 中选择数据,然后作为算法的输入。用户也可以在另一个选项卡中选择算法的参数。在第三个选项卡中,用户可以看到结果图。
如何在 MatLab 中以编程方式或使用 GUIDE 创建选项卡式 GUI?
【问题讨论】:
标签: matlab user-interface tabs
您还可以借助我编写的Matlab File Exchange 提供的实用程序从 GUIDE 创建的 GUI 创建选项卡。
用法相当简单:
在Guide生成函数xxx_OpeningFcn中添加:
handles.tabManager = TabManager(hObject);
附加窗格的位置并不重要,但如果它们与主窗格位于同一位置,则通常更容易编辑 GUI。即使窗格被覆盖,您也可以通过使用“指南”弹出菜单中的“发送到后面”命令循环浏览窗格来编辑窗格。
【讨论】:
这是一个使用半文档化函数 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
【讨论】: