How do I set numerical values to options in a dropdown menu made on appdesigner? I will have multiple drop down menus, the the options in each drop down will need their values added together and display the result.

Capture.PNG

1 Comment

Can you provide more detail? None of your dropdowns appear to be numeric. Are you trying to quantize the non-numeric options, say for gender: male = 1 and female = 2?

Sign in to comment.

Answers (2)

If my assumption in the comment above is accurate, this is a perfect use of the "ItemsData" property of AppDesigner components. The "Items" [male,female] will display in the dropdown list, but the "Value" property will take from the "ItemsData" [1,2] list. Then it's a simple matter of accessing and adding the .Value of each dropdown of concern.
Edit: after investigation, it appears there is no way in "Design View" to make the ItemsData numeric. This is a shame because the tooltip explicitly says "1 x n numeric array" is valid. You can either use str2double, or set the ItemsData in the startupFcn.

11 Comments

Take out the [] in the items data list and just put numbers, it should come out as double. Replace the brackets with 0 or NaN or Inf if you must have "Select" as a dropdown value.
Also, you aren't pulling the dropdown's value in your button callback. You can't add the dropdown itself to another.
jonathan patten's answer moved here for consistency
Okay so yes each option will be assigned a value according. Then each value will essentially be added together to get a total number which will dictate the output. As you can see below I have values for each. I want the select option to not work and force one to choose male or female.
Then i am trying to program the done button to do something like this where it displays the number into the box. Eventually I want it to display 'fatal' if the number reaches over 100, and 'not fatal' if it falls below 100. Bu
Right now the app designer creates the item data like so below. You can see with { } it is making a string rather than using [ ] to get numerical values. When I hit run I get errors saying it isn't numerical and it is a string. I have researched a lot and people seem to say it is a bug. I have seen people use str2double to change it. I am just very lost.
This is now what I am getting. I thought this is how you pull the values, but it seems to still be in a matrix. I also chaged all the [ ] to NaN
Capture.PNG
This isn't what you are getting, it is what you are using. What are the actual results? I don't understand what you meant by "still seems to be a matrix."
As far as I can tell from here, that looks like it will do what you want.
It needs to be outputted into the text box. I am now getting
Error using matlab.ui.control.internal.model.AbstractNumericComponent/set.Value (line 111)
'Value' must be a double scalar.
Changed it so it should output the result in the editfield but nothing shows up. Where am I going wrong?
Capture.PNG
I've updated my answer. I built a MWE, but I can't attach .MLAPP files to my answer...
What is a MWE? You can email it to me if you would like, Jonathan.Patten@ndsu.edu
As to your updated response, I have seen a lot of people saying it is a bug with app designer. I've tried setting the item data in the startup function and it still failed. How and where would I use the str2double function?
Edit, working with the startup function, I am now getting results. I am still curious as to how to get results with str2double function.
Email sent.
MWE = Minimum Working Example. It is an example that fully reproduces the problem or behavior of interest, without anything additional. They are great for troubleshooting (bug reports) because you can avoid the confusion of your other code that has nothing to do with the issue.
@Jonathan Patten Simple, just use the cell of string numbers throughtout your callbacks and whenever you need numeric data, use str2double(app.Dropdown.ItemsData). However MATLAB should let us use numeric data in the first place.

Sign in to comment.

Just add constraint to the parameter, you can edit this parameter to have a rule, the role will be int16 e.g. ..

Categories

Asked:

on 30 Nov 2018

Answered:

on 21 Nov 2021

Community Treasure Hunt

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

Start Hunting!