GUI: how to configure radio buttons to activate/grey out a set of checkboxes?

조회 수: 12 (최근 30일)
Hello, I'm discovering the MATLAB GUI possibilities. Aim: to provide a user with a GUI to select some parameters that are necessary for running a program code. Specific: how do I configure the action applied to a set of 2 mutually exclusive radio buttons so that they activate or grey out a set of checkboxes. So, for instance, when the user selects the 'On' radio button, a set of checkboxes must be enabled. Can someone help me with this?
Thanks in advance!

채택된 답변

Paulo Silva
Paulo Silva 2011년 8월 30일
Using GUIDE
  1. Put one Button Group on your GUI
  2. Put two radiobutton inside the Button Group (that makes them mutually exclusive)
  3. Put the checkboxes on your GUIDE
  4. Click on the first radiobutton with your mouse right button, View Callbacks -> Callback
  5. MATLAB takes you to the m file of the GUI, now you can put the code that runs when you choose that radiobutton
By grey out you mean that the checkboxes are disabled (you can't check them), do this
set(handles.checkbox1,'Enable','off') %disable checkbox1
Do the same for every checkbox you want to disable.
Now to re enable them do the same steps for the other radiobutton but the code is:
set(handles.checkbox1,'Enable','on') %enable checkbox1
  댓글 수: 3
Paulo Silva
Paulo Silva 2011년 8월 31일
hmmm I can adjust individual callbacks just fine (MATLAB 2008b), make sure that you are not clicking on the button group instead of the radiobutton when clicking.
geomod
geomod 2011년 9월 1일
Well, when I hit Callback, a GUIDE dialog appears:
"Button group <tag> manages the Callback of this on.
To customize the behavior when the selected button in the button group changes, modify its SelectionChangeFcn callback."

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

geomod
geomod 2011년 9월 1일
A second question in the line of the first one...
I have a checkbox and when it's marked a axes object shows image A, when it's not marked that same axes object shows an image B. Image A & B have the same size. How do I configure this callback? I now have:
if get(hObject,'Value') == 1
set(handles.axes2, -?- ); % show image A
else
set(handles.axes2, -?- ); % show image B
end
Thanks!
  댓글 수: 2
Paulo Silva
Paulo Silva 2011년 9월 1일
What you want to do is to show the image not change some axes property
axes(handles.axes2) %select axes2, it becomes the current axes
if get(hObject,'Value') == 1
image(imageA) %or whatever code you have to show the image
else
image(imageB)
end
geomod
geomod 2011년 9월 1일
Another nice answer. Thank you!

댓글을 달려면 로그인하십시오.


geomod
geomod 2011년 9월 2일
OK, I've been trying, but without success. What I have: a GUI with several choices to be made by selecting radiobuttons, ticking checkboxes and values from edit text fields. What I want: collect the values and pass them all via varargout to the evoking function when hitting a confirmation button.
If I for example do this:
varargout{1} = get(handles.edit1);
stated in the _OutputFcn, I get this error:
---
??? Attempt to reference field of non-structure array.
Error in ==> buttongroup>buttongroup_OutputFcn at 85 varargout{1} = get(handles.edit1);
Error in ==> gui_mainfcn at 263 [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
Error in ==> buttongroup at 40 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
---
Suggestions?

카테고리

Help CenterFile Exchange에서 Subplots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by