How to pass function to radio button in a button group created using guide in MATLAB?
I have created a button group with four radio buttons and a push button using guide.
There are four funct开发者_运维百科ions, one for each radio button written separately.
- How do you to call these functions from respective radio buttons.
- When a push button is pressed, the function associated with the active radio button should execute.
A solution for the Button Group Callback: SelectionChangeFCN
Use the Selection Change callback property (right click on the Button Group and select View Callbacks->SelectionChangeFcn) of the uipanel. The eventdata argument contains the handles to the current and previously selected radiobutton. The eventdata argument is a structure with the following fields:
- EventName
- OldValue
- NewValue
So, depending on the value of eventdata.NewValue; for example
function uipanel1_SelectionChangeFcn(hObject,eventdata,handles)
...
newButton=get(eventdata.NewValue,'tag');
switch newButton
case 'radiobutton1'
% code for radiobutton 1 here
case 'radiobutton2'
% code for radiobutton 2 here
...
end
...
A solution for the push button callback
The callback for your push button could have something along the lines of
function button1_Callback(hObject,eventdata,handles)
h_selectedRadioButton = get(handles.uipanel1,'SelectedObject');
selectedRadioTag = get(h_selectedRadioButton,'tag')
switch selectedRadioTag
case 'radiobutton1'
case 'radiobutton2'
...
end
I also refer you to the MATLAB documentation for more information on Handle Graphics and building graphical user interfaces.
Crash course on GUI's starts... now:
If you're using guide
, then when you save your figure mygui.fig, the M-file should be automatically generated as mygui.m. Open up mygui.m and enter your code under the radio button callback function. Any variables that you want initialized when you start the program should be defined under the opening function. Make sure you update the handles structure at the end of each callback, with the command guidata(hObject,handles).
For example, if you wanted two mutually exclusive radio buttons (when you select one, the other de-selects, or when you de-select one, the other is selected), enter the following code under their callbacks:
function radiobutton1_Callback(hObject, eventdata, handles)
if get(handles.hObject,'Value')
set(handles.radiobutton2,'Value',0)
else
set(handles.radiobutton2,'Value',1)
end
guidata(hObject,handles);
and
function radiobutton2_Callback(hObject, eventdata, handles)
if get(hObject,'Value')
set(handles.radiobutton1,'Value',0)
else
set(handles.radiobutton1,'Value',1)
end
guidata(hObject,handles);
And initialize radio button one to be selected under the opening function:
set(handles.radiobutton1,'Value',1)
set(handles.radiobutton2,'Value',0)
精彩评论