app designer button push color change
88 次查看(过去 30 天)
显示 更早的评论
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 个评论
Caglar
2018-11-9
You can create a method (function) that sets that button's color to original color and call that function in each of other buttons.
采纳的回答
Cris LaPierre
2018-11-12
编辑:Cris LaPierre
2018-11-12
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 个评论
Cris LaPierre
2021-1-20
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
2021-1-20
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
更多回答(1 个)
Prince Ogbodum
2020-9-1
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 个评论
Prince Ogbodum
2020-9-1
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
2020-9-1
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')
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Properties 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!