而不是創建一個新的數字,而是傳遞想要嵌入代碼的父對象。例如,(假設你使用的連接問題接受的答案的代碼):
function tab_gui1(parent)
hTabGroup = uitabgroup('Parent', parent); % parent here is the main GUI figure.
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));
... Rest of Code is the same
end
然後父對象傳遞給子GUI功能:但是這個特別的安排你的元素
function test_embeddedGUI()
hFig = figure('Menubar', 'none');
tab_gui1(hFig); % your parent object being passed is the main figure.
uicontrol('Style', 'pushbutton', 'String', 'This is a simple test', 'Callback', @testButton);
function testButton(src, evt)
disp('button was pressed');
end
end
那可以/將重疊:
注意,按鈕是重疊的。從我可以從您的問題中收集的信息看來,您希望每個選項卡都有一個帶有子界面的表格主界面。我建議在主GUI上創建標籤界面,然後爲每個標籤創建一個uipanel。然後,您將使用您的單獨功能填充這些uipanel。這裏有一個簡單的例子:
主UI
function test_embeddedGUI()
hFig = figure('Menubar', 'none');
hTabGroup = uitabgroup('Parent', hFig);
hTabs(1) = uitab('Parent', hTabGroup, 'Title', 'First');
hTabs(2) = uitab('Parent', hTabGroup, 'Title', 'Second');
hTabs(3) = uitab('Parent', hTabGroup, 'Title', 'Third');
set(hTabGroup, 'SelectedTab', hTabs(1));
firstPanel = uipanel('Title', 'Main Panel', 'Parent', hTabs(1));
secondPanel = uipanel('Title', 'Secondary Panel', 'Parent', hTabs(2));
thirdPanel = uipanel('Title', 'Final Panel', 'Parent', hTabs(3));
subUI1(firstPanel);
end
SubUI:
function subUI1(parent)
firstButton = uicontrol('Style', 'pushbutton', 'String', 'First Button' ...
, 'Parent', parent, 'Callback', @buttonPress);
function buttonPress(src, evt)
disp('Main Button press');
end
end
,這將創造像這樣的接口:
我不Ť明白爲什麼你想要另一個人物。爲什麼你不重用一個現有的軸對象,或創建一個新的? –
@EitanT這是我認爲需要發生的事情,然而在[聊天出現](http://chat.stackexchange.com/rooms/116/conversation/matlab-tabular-gui)之後,我只需要通過父項圖和填充使用?我仍然不確定如何完全做到這一點,並願意接受所有建議。 – KronoS
@EitanT可能是對的,在Python中你也可以繪製到軸對象,它是圖形對象的一部分,但是是一個正在繪製實際圖形的對象。 –