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 comentarios

Jan
Jan el 9 de Ag. de 2013
I do not get the problem. You overwrite handles.flag_tr and .check_tr in each iteration.
nl2605
nl2605 el 9 de Ag. de 2013
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.
Jan
Jan el 9 de Ag. de 2013
And does my answer help you in any way?

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 9 de Ag. de 2013

0 votos

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 comentarios

nl2605
nl2605 el 27 de Sept. de 2013
It didn't help really..its giving me more number of errors than before!
nl2605
nl2605 el 27 de Sept. de 2013
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 el 27 de Sept. de 2013
Editada: nl2605 el 27 de Sept. de 2013
Phew!! This worked. Thanks a lot! It was my mistake it was giving errors.

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 27 de Sept. de 2013

0 votos

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 comentarios

nl2605
nl2605 el 27 de Sept. de 2013
Editada: nl2605 el 27 de Sept. de 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.
Image Analyst
Image Analyst el 27 de Sept. de 2013
That's not a reason for not using GUIDE. I think you didn't understand what I said.
nl2605
nl2605 el 27 de Sept. de 2013
Editada: nl2605 el 27 de Sept. de 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. :/
Image Analyst
Image Analyst el 27 de Sept. de 2013
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 el 27 de Sept. de 2013
Editada: nl2605 el 27 de Sept. de 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?
nl2605
nl2605 el 27 de Sept. de 2013
Ohh I don't think so I can. But anyway thanks a ton!

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 9 de Ag. de 2013

Comentada:

el 27 de Sept. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by