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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Jan
Jan am 9 Aug. 2013

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 27 Sep. 2013

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 9 Aug. 2013

Kommentiert:

am 27 Sep. 2013

Community Treasure Hunt

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

Start Hunting!

Translated by