app designer button push color change

89 views (last 30 days)
Hi everyone,
I have an app designer app that includes a button that turns green when pressed. However, whenever any other button is pressed, a panel comes up but does not cover the now green button. So, the button is still green but I want it to go back to white when any other button is pressed after.
Thank you!!
  1 Comment
Caglar
Caglar on 9 Nov 2018
You can create a method (function) that sets that button's color to original color and call that function in each of other buttons.

Sign in to comment.

Accepted Answer

Cris LaPierre
Cris LaPierre on 12 Nov 2018
Edited: Cris LaPierre on 12 Nov 2018
Code execution in an app is initiated by callback functions. When you open the app in appDesigner and right click on the button that turns green in Design View, you should see a menu option for callbacks. Hover over it and a second menu appears with the option "Go to <button name> callback". That will take you to the code that executes when you press on the button. There you will see how they set the color to green. If my button is called Button4, the code might look like this:
% Button pushed function: Button4
function Button4Pushed(app, event)
...
app.Button4.BackgroundColor = 'g';
end
You can create a separate function that turns the background color back to the default and call that, or you can directly reset the background color inside another function. For example, if another button is call Button2, I might add this code to return Button4 to the default background color:
% Button pushed function: Button2
function Button2(app, event)
...
app.Button4.BackgroundColor = [0.96,0.96,0.96];
end
Incidentally, the default background color is [0.96,0.96,0.96].
  7 Comments
Cris LaPierre
Cris LaPierre on 20 Jan 2021
You will probably need to add a pause to your code before you set the color to green in order to see the orange. The code is likley executing so quickly that the button is only orange for a very short amount of time.
Amrit Zoad
Amrit Zoad on 20 Jan 2021
Hi Cris,
Thanks a lot! :)
Although my code in the center took more than 200 secs to process, still the Orange button wasn't showing up. Adding pause(1), did the trick.
Thanks again. :D

Sign in to comment.

More Answers (1)

Prince Ogbodum
Prince Ogbodum on 1 Sep 2020
Is there a way to get this done for MATLAB R2007b?? I mean to change background color only when another buton is pressed. For example: I have an app with 3 pushbuttons and I want a case whereby If Psbtn1 is pressed its color turns red to show it is active, if Psbtn2 is then pressed it turns red while Psbtn1 returns to its default color to show that the active state is that of Psbtn2
  3 Comments
Prince Ogbodum
Prince Ogbodum on 1 Sep 2020
Thanks for the response Cris. However, that didn't seem to solve my problem. I have attached a screen short of the response I got after inputing the code and clicking the pushbutton. Let me restate my question for better clarity.
I am trying to create a GUI to control the speed and rotation of a DC motor. So, I want a case whereby if the pushbutton representing speed1 is pressed (there are 5 of them), it turns red to indicate to the user or observer that the motor is running at speed1. If the pushbutton representing speed2 is pressed then it turns red while speed1 button returns to its default color to indicate that the motor is now running at speed2 and so on. So, what I need is the code to achieve this. Thanks in anticipation.
Steven Lord
Steven Lord on 1 Sep 2020
In release R2007b, you can't use the dot syntax to set properties of a Handle Graphics object. You will need to call set.
set(handles.pushbutton2, 'BackgroundColor', 'r')

Sign in to comment.

Categories

Find more on Graphics Object Properties in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!