app designer button push color change

89 ビュー (過去 30 日間)
Allison Carey
Allison Carey 2018 年 11 月 9 日
コメント済み: Amrit Zoad 2021 年 1 月 20 日
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
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
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
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
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
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
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
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 ExchangeGraphics Object Properties についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by