Help on Disappearing Popupmenu

So I've created a GUI with a popupmenu, but it seems that whenever I try to populate the menu, it disappears, anyone know what going on. Thanks in advance. Heres an example of what I am trying to do.
var1 = {'Ex1','Ex2','Ex3'}
for i =1:length(var1)
set(handles.popupmenu1,'String',var1(i),'Value',i)
end

 Accepted Answer

That code you gave will give you a single item (the last one) in the popup. Do not use a for loop. The items in a popup or listbox are not entered in one at a time like you tried, they are done all at once with a single call to set the string property. What you did was to set the entire list to just a single item, and you did it 3 times (once on each iteration of your for loop). Since there is only one item in there, and the value is now 3 (which is more than 1), the popup will not display.
To fix, send in all the items in one shot, then set the value.
var1 = {'Ex1', 'Ex2', 'Ex3'}
set(handles.popupmenu1, 'String', var1); % Send in all 3 items at once.
set(handles.popupmenu1, 'Value', length(var1)); % Set what item is selected (the last one).

1 Comment

That did it. Thanks buddy. Ive literally been working on this problem since last thursday. Thanks again!

Sign in to comment.

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 14 Jul 2014
Edited: Azzi Abdelmalek on 14 Jul 2014
Why the for loop?
var1 = {'Ex1','Ex2','Ex3'}
i=1
set(handles.popupmenu1,'String',var1,'Value',i)

4 Comments

because I need to change the position of the string in the menu, otherwise the value wi;l; always be 1 and I will get an error. I read online that this is why the popupmenu is disappearing, problem is that even though I set the value, its still disappearing and I can't understand why. Ive done it with set(handles.popupomenu1,'String',var1), but I still get the same error, so I thought that by looping through and setting the value incrementally, this would solve my issue; it hasn't.
(Warning: popupmenu control requires that Value be an integer within String range Control will not be rendered until all of its parameter values are valid )
There is something in your code that causes this problem, but not the lines of code you've posted
Ive checked and debug everything. var 1 is being set, the value is being changed, but its not doing the trick. I would post the code, but its too extensive.
Azzi's code is correct. If it doesn't work, then do it in two separate steps, set the string first, and then the value. Do not use a for loop. The items are not entered in one at a time like you tried, they are done all at once with a single call to set the string property.

Sign in to comment.

Categories

Asked:

on 14 Jul 2014

Commented:

on 14 Jul 2014

Community Treasure Hunt

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

Start Hunting!