Effacer les filtres
Effacer les filtres

Code checking error in App Designer, it thinks xxxx.BackgroundColor is a scalar

88 156 vues (au cours des 30 derniers jours)
Alessandro Livi
Alessandro Livi le 6 Juil 2024 à 21:11
Commenté : Voss le 10 Juil 2024 à 18:01
I'm changing the background color to alert the user about various (async) conditions and button pressed.
if app.STOPTRIALSButton.BackgroundColor == [0.95 0.33 0.10]
app.STOPTRIALSButton.BackgroundColor = [0 1 0];
end
and I get the warning:
Unexpected use of '[' in a scalar context.
but of course colors are RGB three values, so the code runs fine.
Also while the Component browser shows (another) color as 0.65, 0.65, 0.65 that's the wrong syntax (no commas please for easier cut and paste) and in the startup code the values are actually [0.651 0.651 0.651] so my compare failed without significant research as to why.
Finally, App Designer isn't listed as a product below, so I can't flag that. Just saying MATLAB is the product.

Réponses (2)

Voss
Voss le 6 Juil 2024 à 23:22
To avoid the warning, use:
if isequal(app.STOPTRIALSButton.BackgroundColor,[0.95 0.33 0.10])
app.STOPTRIALSButton.BackgroundColor = [0 1 0];
end
  3 commentaires
Walter Roberson
Walter Roberson le 7 Juil 2024 à 22:33
Do not compare floating point numbers for exact equality.
if isnumeric(app.STOPTRIALSButton.BackgroundColor) && all(abs(app.STOPTRIALSButton.BackgroundColor - [0.95 0.33 0.10]) <= 0.01)
Voss
Voss le 7 Juil 2024 à 22:40
If App Designer puts a line of code that says
app.STOPTRIALSButton.BackgroundColor = [0.949 0.3294 0.102]
and you want to check that that BackgroundColor is still in effect, use
if isequal(app.STOPTRIALSButton.BackgroundColor,[0.949 0.3294 0.102])

Connectez-vous pour commenter.


Alessandro Livi
Alessandro Livi le 10 Juil 2024 à 17:49
This is crazy that you can't simply compare colors, consder options I mention above meanwhie
if isnumeric(app.STOPTRIALSButton.BackgroundColor) && all(abs(app.STOPTRIALSButton.BackgroundColor - [0.95 0.33 0.10]) <= 0.01
should work,
(make this a documented (or included) function SameColor( Color1 Color2) as above?
Also I was directed to a colors names list (not in MatLab) and most of the names don't work.
'color name' must match a rather short list, none of the off white names work (like a name for [0.94 0.94 0.94] or [0.90 0.90 0.90] which seem to be common default background colors
  1 commentaire
Voss
Voss le 10 Juil 2024 à 18:01
Here's the list of named colors in MATLAB
They are the eight colors all of whose RGB components are 0 or 1 (i.e. [0,0,0], [0,0,1], [0,1,0], [0,1,1], [1,0,0], [1,0,1], [1,1,0], [1,1,1]).

Connectez-vous pour commenter.

Catégories

En savoir plus sur Environment and Settings dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by