Can someone give me a simple example about how to use the uibutton 'state' property?

27 views (last 30 days)
Hello guys!
I am creating an application with a Play/Stop button. I know I have to use uibutton and use the property state which returns 1 when the button is pressed and 0 when is not pressed. How can I detect when the value of 'state' changes? For instance, if the button is pressed, I want to display: 'The button has been pressed' and when the button is pressed again, I want to display: 'The button is not pressed.' How do you do this in Matlab? This will help me implement what I need for my app.
Thank you in advance for your attention and help!

Accepted Answer

Aman
Aman on 23 Jun 2023
Edited: Aman on 23 Jun 2023
Hi Miguel,
Here’s an example code that demonstrates how to create a toggle button with a callback function that displays the appropriate message when the button is pressed:
% Create a figure window
fig = uifigure;
% Create a toggle button and set its callback function
myButton = uibutton(fig,'state','Text','Play/Stop',...
'Position',[20 20 100 50],'ValueChangedFcn',@myButtonCallback);
function myButtonCallback(hObject,eventdata)
if hObject.Value == 1
disp('The button has been pressed')
else
disp('The button is not pressed')
end
end
In this example code, we define a function called myButtonCallback which is used as a callback function for a toggle button object. The toggle button object is created using the uibutton function with the 'state' property set to 'on'. The toggle button object is assigned a callback function using the 'ValueChangedFcn' property of the object. When the button is pressed, the callback function is executed.
The if statement in the callback function checks the value of the 'Value' property of the toggle button object. If the value is 1, it displays the message 'The button has been pressed'. If the value is 0, it displays the message 'The button is not pressed'.
Hope this helps!
  4 Comments
Miguel
Miguel on 23 Jun 2023
Thank you so much Aman! This works perfectly! You are the best. Have a very good day!

Sign in to comment.

More Answers (1)

Deep
Deep on 23 Jun 2023
You can use a simple "PushButton" or "ToggleButton". Here's an example of how to do this with a ToggleButton in MATLAB:
First, you'll need to create a figure, then create a toggle button on that figure and set the callback function.
% Create figure
f = figure('Position',[200,200,400,150]);
% Create toggle button
toggleButton = uicontrol('Style','togglebutton',...
'String','Play/Stop',...
'Position',[50,50,300,50],...
'Callback', @toggleButtonCallback); % Callback function
Next, you'll want to define the callback function for when the button state changes. When a ToggleButton is pressed, it's 'Value' property changes - 1 if it's pressed and 0 if it's not.
% Define the callback function
function toggleButtonCallback(source,eventdata)
switch source.Value
case 0
disp('The button is not pressed.')
case 1
disp('The button has been pressed.')
end
end
In the callback function, we check the value of the 'Value' property and display a different message depending on whether the button is pressed or not.
When the user interacts with the toggle button, MATLAB automatically calls the toggleButtonCallback function with two arguments:
  1. A handle to the object (in this case, the toggle button) that is triggering the callback.
  2. An event data structure that contains information about the triggering event.
In our case, we don't need to use the event data structure, so we just use the handle (source) to check the Value property of the toggle button.
Links to useful resources:
  1 Comment
Miguel
Miguel on 23 Jun 2023
Deep, thank you for your reply to my question. I highly appreciate your help. As I said to Aman above, I thought that I could figure out the rest of what I am trying to accomplish after understaidng how the state property of the uibutton works. However, I was wrong. I am trying to create a play/stop button that when the button is pressed, it repeatedly executes certain task. For instance, it displays 'The button is pressed' again and again until I press the button again. I thought that a simple while loop would do it, but when I try to use a while loop, after pressing the button once, I cannot get the loop to stop by pressing the button again. Do you have any insights about how I can accomplish this? Thanks in advance for your help.

Sign in to comment.

Categories

Find more on Migrate GUIDE Apps in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!