To design a user friendly GUI

Hello All
I am trying to design a GUI in which the number of radio buttons change according to the number calculated by another function. The important thing is, although I am able to get the GUI, I am not able to access the radio buttons being created. I can use gcbo. But I can't distinguish between the buttons.
for i = 1:5
handles.tr(i) = uicontrol('Style','radiobutton','String','Translation',... 'pos',[40 (1+(i*30)) 100 30],'HandleVisibility','off');
set(handles.tr(i),'Callback',@selcbk);
handles.flag_tr = 1;
handles.check_tr = 1;
end
But when I try to access the radio buttons, I can only do that using gcbo. Could you suggest some method by which I can distinguish between the buttons and hence, access them?

3 Comments

I do not get the problem. You overwrite handles.flag_tr and .check_tr in each iteration.
Yea, I don't need to. I know that. But I don't know where else to declare the variables. I have used GUIDE always to construct GUI's. This is the first time I making my own code. Anyway the issue is that I don't know how to access the properties of the radiobuttons being made.
And does my answer help you in any way?

Sign in to comment.

 Accepted Answer

The problem is not clear to me. Perhaps this helps:
handles.flag_tr = 1; % Once only
handles.check_tr = 1;
for i = 1:5
handles.tr(i) = uicontrol('Style','radiobutton','String','Translation',...
'pos',[40 (1+(i*30)) 100 30],'HandleVisibility','off', ...
'Callback',@selcbk);
end
guidata(FigureHandle, handles);
...
function selcbk(ObjectH, EventData)
handles = guidata(ObjectH);
allBoxes = handles.tr;
selectedBox = ObjectH;
otherBoxes = allBoxes(allBoxes ~= selectedBox);

3 Comments

It didn't help really..its giving me more number of errors than before!
Its just that I need to produce a certain number of radio buttons(the number decided by another function). The radio buttons should appear in columns of two, where each column represents lets say a decision. I can produce the radio buttons. But I am not able to store which is getting selected by the user.
nl2605
nl2605 on 27 Sep 2013
Edited: nl2605 on 27 Sep 2013
Phew!! This worked. Thanks a lot! It was my mistake it was giving errors.

Sign in to comment.

More Answers (1)

How about you use GUIDE to place all of the radio buttons that you might ever need on the GUI, and then jsut set the visibility property to on or off depending if you want it to appear or not?
set(handles.radio1, 'Visibility', 'on');
set(handles.radio2, 'Visibility', 'on');
set(handles.radio3, 'Visibility', 'off');
set(handles.radio4, 'Visibility', 'off');

6 Comments

nl2605
nl2605 on 27 Sep 2013
Edited: nl2605 on 27 Sep 2013
Hi..I am not using GUIDE as the number of radio buttons that I want will be calculated and will change whenever I run my program again.
That's not a reason for not using GUIDE. I think you didn't understand what I said.
nl2605
nl2605 on 27 Sep 2013
Edited: nl2605 on 27 Sep 2013
I thought you said that I should for example put 20 radio buttons and use 10 of them by changing visibility? But what if my program in some later stage needs 21 radio buttons.
And if this works. Then lets say I need only 5 radio buttons to appear, then how can I put it in a for loop. Because I can access the radiobutton Visibility property using its Tag.
I am sorry but I have been stuck with this problem for a very long time now. :/
Yes, if the most buttons you can ever have is, say, 25, then put 25 on there. In the opening fcn you can put the handles of the radio buttons into an array (just like Jan did). Then, say, a popup (drop down list) callback indicates that you should have 10 showing. So you then run a loop (like Jan did) where you set the visibility of radio buttons 1-10 "on", and 11-25 "off". But anyway, it looks like you're successfully using Jan's method so you're all set. Jan is a fan of the do-it-yourself method while I'm a fan of the GUIDE method.
nl2605
nl2605 on 27 Sep 2013
Edited: nl2605 on 27 Sep 2013
Hmmm..I like the GUIDE way too. But I thought this problem wouldn't have a solution with GUIDE. But I am slowly learning there isn't any 'no solution'. Thanks a lot. By the way can I accept both your solutions for future reference for others?
Ohh I don't think so I can. But anyway thanks a ton!

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Asked:

on 9 Aug 2013

Commented:

on 27 Sep 2013

Community Treasure Hunt

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

Start Hunting!