How to control a push button?

hi guys, I have a push button and I want that when I click on it another push button will appear and if I click a second time so other push button appear etc.... I need your help because i'm really lost and I need to know how to do it thanks

Answers (1)

I'll assume that you are using GUIDE to build your GUI.
Suppose that you have two push buttons named pushbutton1 and pushbutton2. When your GUI launches, only the first button is visible. To hide the second button, in your GUI's yourGuiName_OpeningFcn function, add the following code
set(handles.pushbutton2,'Visible','off');
yourGuiName is the name of your GUI. The above line of code hides the push button.
Now in the GUI editor, select the first push button and from the menu, select View --> View Callbacks --> Callback. The following code should appear in the MATLAB m file editor
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
In the body for this function, just add
set(handles.pushbutton2,'Visible','on');
Now run the GUI. You will observe that only the first push button is visible. Press it, and the second will appear.
To allow for another push button to appear on the second press of the first button (which I think is also part of your question), you will need to track the number of times that the button is pressed.
Let us assume that there is a third push button named pushbutton3. In yourGuiName_OpeningFcn function, modify the body so that it looks like
% Choose default command line output for untitled2
handles.output = hObject;
% initialize the counter for number of times pressed for button 1
handles.button1PressCount = 0;
% Update handles structure
guidata(hObject, handles);
set(handles.pushbutton2,'Visible','off');
set(handles.pushbutton3,'Visible','off');
In the above, we added some user-defined data to the handles object in the form of a counter of the number of times that the first push button has been pressed. We then save this data using the guidata(hObject, handles); call. Order is important here! We then hide the third push button.
In the callback to the first push button, modify its body as follows
% increment the counter for the press count for this button
handles.button1PressCount = handles.button1PressCount + 1;
% save the data
guidata(hObject, handles);
if handles.button1PressCount==1
set(handles.pushbutton2,'Visible','on');
elseif handles.button1PressCount==2
set(handles.pushbutton3,'Visible','on');
end
So we increment the counter for the number of times the button has been pressed and then save the data using guidata. The if/elseif is then used to determine which button to reveal.
Try the above and see what happens!

5 Comments

finally it works!!!! thank you very much hope to be able to ask you later if i have other questions and I think I will because it is a heavy project and thank you another time
so now I have six push buttons, what if I want to delete or do not make visible those push buttons.So I made a new push button and called it "Delete Button" and I want when I click on the "Delete Button" to delete the push button that I want and not necessary in order, can that be done?
By delete do you really mean hide? Yes, I'm sure you hide various button in whichever order you wish as long as you decide on the correct logic.
yes I want to hide them and in the order that the user may want, so do you have any idea how to do that?
How would you allow the user to select which buttons to hide? What is the use case behind this?

Sign in to comment.

Categories

Asked:

on 9 Jul 2014

Commented:

on 11 Jul 2014

Community Treasure Hunt

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

Start Hunting!