Pass String as Variable Into Function

22 vues (au cours des 30 derniers jours)
Andrew
Andrew le 21 Déc 2017
Commenté : Mike Wilson le 21 Sep 2020
Sorry, I posted a previous question that was convoluted and didn't really address my main concern. I'm trying to pass a string which is the variable name of a pre-existing UI object into the 'set' function inside a callback function. For example, set(variable1, ...), but I'm not sure how to convert the string 'variable1' into the literal word variable1 to be used in 'set'. Any help is appreciated! Thanks.
Edit: I'm not fond of using it, but I tried the eval function:
eval(['set(variable' num2str(1) ', "String", "hello")']) ;
Yet it doesn't work (I get the error "Invalid parameter/value pair arguments.")
Second Edit: I found the solution! Just use handles format instead:
eval(['variable' num2str(1) '.String = "hello"'])
  1 commentaire
Mike Wilson
Mike Wilson le 21 Sep 2020
Why bother giving such feedback when obviously you feel so much superior to those who know less than you. Get off your high horse and be nice to people.

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 21 Déc 2017
Put your data into the handles structure and then use dynamic fieldnames
varname = sprintf('variable%d', 1);
set( handles.(varname), 'String', 'hello')
Or better yet,
variables = [handles.variable1, handles.variable2, handles.variable3, ....];
which_handle = variables(1);
set(which_handle, 'String', 'hello')
  5 commentaires
Walter Roberson
Walter Roberson le 3 Jan 2018
OpenFcn callback is not called automatically; it is a special name that GUIDE knows rather than being a true callback. CreateFcn callback always exist though.
However, you must have a section of your code that is initializing the GUI. You should construct the list of handles as you call uicontrol() or whatever to create the GUI.
variables(1) = uicontrol(...)
variables(2) = uicontrol(...)
and then just make sure you place the variables variable somewhere accessible. http://matlab.wikia.com/wiki/FAQ#How_can_I_share_data_between_callback_functions_in_my_GUI.28s.29.3F
Andrew
Andrew le 3 Jan 2018
Ah ok I was able to initialize it that way. It works perfectly, thank you again.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Interactive Control and Callbacks dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by