I have designed a GUI with uitabs. I want to achieve a smooth transition (optical effect) when the selected tab is changed. For it, I write the following callback:
function SelectionChangeCbk(src,evt)
oldTab = evt.OldValue;
newTab = evt.NewValue;
set([oldTab,newTab],'Visible','off');
drawnow;
pause(2);
set(newTab,'Visible','on');
end
However, I can get my target because this does not work (I have two tabs. The selected tab before the change is called oldTab and the new tab, selected after the change, is called newTab. I want that when I change from oldTab to newTab, first oldTab and newTab becomes invisible, then waiting for two seconds before newTab appears).
I have tried the application WindowAPI but it only works with figure handles.
P.D.: Here is the complete code:
function AA
fh = figure('Units','characters','Position',[-200.2 -77 214.8 46.154],...
'Menu','none','Toolbar','none','NumberTitle','off');
movegui(fh,'center');
warning off MATLAB:uitabgroup:OldVersion % turn off warning
htab = uitabgroup('Parent',fh,'BackgroundColor','k',...
'SelectionChangeCallback',@SelectionChangeCbk);
th1 = uitab('parent',htab,'title','Tab#1');
hPan1 = uipanel(th1,'title','Panel1','Units','characters',...
'Position',[27.24 27.163 217.92 13.038],'BorderType','line',...
'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan1,'Style','text','String','Text#1',...
'Units','normalized','Position',[0.117 0.617 0.208 0.128],...
'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan1,'Style','edit','String','300','Units',...
'normalized','Position',[0.354 0.623 0.228 0.128],...
'ForegroundColor','k','BackgroundColor','w');
uicontrol(hPan1,'Style','text','String','Text#2',...
'Units','normalized','Position',[0.156 0.248 0.166 0.128],...
'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan1,'Style','edit','String','1000','Units',...
'normalized','Position',[0.354 0.259 0.228 0.128],...
'ForegroundColor','k','BackgroundColor','w');
hPan2 = uipanel(th1,'title','Panel2','Units',...
'characters','Position',[27.24 7 217.92 13.038],...
'ForegroundColor','w','BackgroundColor','k','BorderType','line');
uicontrol(hPan2,'Style','text','String',...
'Text#3','Units','normalized',...
'Position',[0.112 0.632 0.215 0.128],'ForegroundColor',...
'w','BackgroundColor','k');
uicontrol(hPan2,'Style','edit','String','100','Units',...
'normalized','Position',[0.354 0.618 0.228 0.148],'ForegroundColor',...
'k','BackgroundColor','w');
uicontrol(hPan2,'Style','text','String','Text#4',...
'Units','normalized','Position',[0.171 0.248 0.15 0.128],'FontSize',...
9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan2,'Style','edit','String','100','Units',...
'normalized','Position',[0.354 0.235 0.228 0.148],...
'ForegroundColor','k','BackgroundColor','w');
th2 = uitab('parent',htab,'title','Tab#2','Units',...
'characters');
hPan3 = uipanel(th2,'title','Panel3','Units','characters',...
'Position',[4.248 24.462 217.552 16.923],'ForegroundColor','w',...
'BackgroundColor','k');
hPan31 = uipanel(hPan3,'title','Panel 3.1','Units','normalized',...
'Position',[0.017 0.13 0.496 0.816],'ForegroundColor','w',...
'BackgroundColor','k','BorderType','line');
uicontrol(hPan31,'Style','text','String','Text311','Units',...
'normalized','Position',[0.079 0.711 0.34 0.171],'FontSize',9,...
'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan31,'Style','edit','String','1000',...
'Units','normalized','Position',...
[0.455 0.8 0.242 0.099],'ForegroundColor','k',...
'BackgroundColor','w');
uicontrol(hPan31,'Style','edit','String','1000',...
'Units','normalized','Position',[0.455 0.451 0.241 0.133],...
'ForegroundColor','k','BackgroundColor','w');
uicontrol(hPan31,'Style','text','String','Label','Units','normalized',...
'Position',[0.741 0.437 0.101 0.151],'ForegroundColor',...
'w','BackgroundColor','k');
uicontrol(hPan31,'Style','edit','String','4','Units',...
'normalized','Position',[0.862 0.458 0.1 0.133],'ForegroundColor',...
'k','BackgroundColor','w');
hPan32 = uipanel(hPan3,'title','Panel 3.2','Units',...
'normalized','Position',[0.53 0.13 0.231 0.816],...
'ForegroundColor','w','BackgroundColor','k','BorderType',...
'line');
uicontrol(hPan32,'Style','text','String','TEXT34',...
'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],...
'FontSize',9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan32,'Style','edit','String','10',...
'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',...
9,'ForegroundColor','k','BackgroundColor','w');
hPan33 = uipanel(hPan3,'title','Panel 3.3','Units',...
'normalized','Position',[0.778 0.13 0.205 0.816],...
'ForegroundColor','w','BackgroundColor','k','BorderType','line');
uicontrol(hPan33,'Style','text','String','TEXT34',...
'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],...
'FontSize',9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan33,'Style','edit','String','10',...
'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',...
9,'ForegroundColor','k','BackgroundColor','w');
hPan4 = uipanel(th2,'title','Panel 4','Units','characters',...
'Position',[4.248 0.831 264.228 27],'ForegroundColor','w',...
'BackgroundColor','k');
hPan41 = uipanel(hPan4,'title','Panel 4.1','Units','normalized',...
'Position',[0.012 0.521 0.3 0.48],'ForegroundColor','w',...
'BackgroundColor','k','BorderType','line');
uicontrol(hPan41,'Style','text','String','TEXT34',...
'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],...
'FontSize',9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan41,'Style','edit','String','10',...
'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',...
9,'ForegroundColor','k','BackgroundColor','w');
% Subpanel "Intervalo de análisis"
hPan42 = uipanel(hPan4,'title','Panel 4.2','Units',...
'normalized','Position',[0.012 0.02 0.3 0.48],'ForegroundColor','w',...
'BackgroundColor','k','BorderType','line');
uicontrol(hPan42,'Style','text','String','TEXT34',...
'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],...
'FontSize',9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan42,'Style','edit','String','10',...
'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',...
9,'ForegroundColor','k','BackgroundColor','w');
hPan43 = uipanel(hPan4,'title','Panel 4.3',...
'Units','normalized','Position',[0.324 0.02 0.261 0.98],...
'ForegroundColor','w','BackgroundColor','k','BorderType','line');
uicontrol(hPan43,'Style','text','String','TEXT34',...
'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],...
'FontSize',9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan43,'Style','edit','String','10',...
'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',...
9,'ForegroundColor','k','BackgroundColor','w');
hPan44 = uipanel(hPan4,'title','Panel 4.4',...
'Units','normalized','Position',[0.597 0.02 0.391 0.98],...
'ForegroundColor','w','BackgroundColor','k','BorderType','line');
uicontrol(hPan44,'Style','text','String','TEXT34',...
'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],...
'FontSize',9,'ForegroundColor','w','BackgroundColor','k');
uicontrol(hPan44,'Style','edit','String','10',...
'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',...
9,'ForegroundColor','k','BackgroundColor','w');
function SelectionChangeCbk(src,evt)
oldTab = evt.OldValue;
newTab = evt.NewValue;
set([oldTab,newTab],'Visible','off');
drawnow;
pause(2);
set(newTab,'Visible','on');
end
end
I would not use
uitabgroup. It is not documented, and its behavior is undefined. Instead, consider using theGUI Layout toolboxpackage from Matlab Central. By the way, the visibility is handled there by moving panels to far location unseen on the screen (Like(-100000,-100000)) – it seems to be more robust than setting visibility.Anyhow, there is no easy way to achieve smooth fade-in/fade-out transition in Matlab GUI, at least not a documented one.