Help: Display a different layout when pushing a button in a GUI?

Hi all,
I'm trying to write a programmatic GUI. It includes a push button and a edit text named "tab1" when it initializes. Then when I hit the button the edit text "tab1" will be hidden and the GUI will show the edit text "tab2" which was invisible before hitting the button. I also attached my code which doesn't work.
Any help would be greatly appreciated.
Thanks.

2 件のコメント

Robert Cumming
Robert Cumming 2014 年 10 月 16 日
Which Matlab version are you using?
Khanh
Khanh 2014 年 10 月 17 日
Hi Robert
I'm using MATLAB 2014a.

サインインしてコメントする。

 採用された回答

Robert Cumming
Robert Cumming 2014 年 10 月 17 日

0 投票

The reason your code doesn;t work - is that when the callback for the pushbutton is created the variable S.tab1 doesn't exist. If you moved the pushbutton creation to the end then it would work.
It looks like you are trying to build a GUI with tabs?
If you looking for an off the shelf solution look here
A good place to start to learn about GUIs is to use this FEX submission

1 件のコメント

Khanh
Khanh 2014 年 10 月 17 日
編集済み: Khanh 2014 年 10 月 17 日
I'm trying to build a GUI with multi tab. Really thank you. I moved the set callback for the push button on the callback function line immidiately, it worked.
Thanks for your addtional advice.

サインインしてコメントする。

その他の回答 (1 件)

Mikhail
Mikhail 2014 年 10 月 14 日

0 投票

Didn't see your code. In your push button callback function write: set("edit box id",'String','tab2'), where "edit box id" is your edit box identifier (It appears when you create it.)

5 件のコメント

Khanh
Khanh 2014 年 10 月 14 日
function [] = untitled_build(varargin)
% --- FIGURE -------------------------------------
S.figure1 = figure( ...
'Tag', 'figure1', ...
'Units', 'characters', ...
'Position', [102.8 24.3076923076923 114 32.9230769230769], ...
'Name', 'untitled', ...
'MenuBar', 'none', ...
'NumberTitle', 'off', ...
'Color', [0.941 0.941 0.941])
% --- PUSHBUTTONS -------------------------------------
S.pushbutton1 = uicontrol( ...
'Tag', 'pushbutton1', ...
'Style', 'pushbutton', ...
'Units', 'characters', ...
'Position', [37.2 11.2307692307692 23 3.23076923076923], ...
'String', {'Push Button'})
set(S.pushbutton1,'callback',{@pushbutton1_Callback,S})
% --- EDIT TEXTS -------------------------------------
S.tab1 = uicontrol( ...
'Tag', 'tab1', ...
'Style', 'edit', ...
'Units', 'characters', ...
'Position', [14.8 23.6153846153846 24.8 3.92307692307692], ...
'BackgroundColor', [1 1 1], ...
'String', 'tab1')
set(S.tab1,'callback',{@tab1_Callback,S})
S.tab2 = uicontrol( ...
'Tag', 'tab2', ...
'Style', 'edit', ...
'visible','off',...
'Units', 'characters', ...
'Position', [59.6 23.4615384615385 24.8 3.92307692307692], ...
'BackgroundColor', [1 1 1], ...
'String', 'tab2')
set(S.tab2,'callback',{@tab2_Callback,S})
%%---------------------------------------------------------------------------
function []=pushbutton1_Callback(varargin) %#ok<INUSD>
S=varargin{3}
%set(S.tab1,'visible','off')
%
% %%---------------------------------------------------------------------------
% function tab1_Callback(hObject,evata) %#ok<INUSD>
%
%
%
% %%---------------------------------------------------------------------------
% function tab1_CreateFcn(hObject,evata) %#ok<INUSD>
%
%
%
% %%---------------------------------------------------------------------------
% function tab2_Callback(hObject,evata) %#ok<INUSD>
%
%
%
% %%---------------------------------------------------------------------------
% function tab2_CreateFcn(hObject,evata) %#ok<INUSD>
%
%
%
Khanh
Khanh 2014 年 10 月 14 日
The attached file is OK. But I also post it in comment. Please examine and figure out my mistake.
Mikhail
Mikhail 2014 年 10 月 14 日
function []=pushbutton1_Callback(varargin) %#ok<INUSD>
S=varargin{3}
%set(S.tab1,'visible','off')
This is your pushbutton callback function. To make your tab2 visible write inside: set(S.tab2,'visible','on')
To make your tab1 invisible write inside:
set(S.tab1,'visible','off')
Note: you might have problem with arguments. Either use global variables (callback function is inside your main function) or at the step where you define your callback function for pushbutton insert additional arguments S.tab1, S.tab1
Khanh
Khanh 2014 年 10 月 15 日
Hi Mikhail
Thanks for you answers.
Although I used both ways, it doesn't work. I went around whole day but I still don't understand my problem.
Mikhail
Mikhail 2014 年 10 月 16 日
Hi, no problem. What I recommend to you is to download something in Matlab exchanger and use it as a template for a first time, before you get enough experience.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeInteractive Control and Callbacks についてさらに検索

質問済み:

2014 年 10 月 14 日

編集済み:

2014 年 10 月 17 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by