我创建了一个包含四个单选按钮和一个使用指南的按钮的按钮组。
有四个功能,每个单选按钮一个单独编写。
- 您如何从相应的单选按钮调用这些功能。
- 当按下按钮时,应执行与活动单选按钮相关的功能。
我创建了一个包含四个单选按钮和一个使用指南的按钮的按钮组。
有四个功能,每个单选按钮一个单独编写。
按钮组回调的一种解决方案:SelectionChangeFCN
使用uipanel的Selection Change回调属性(右键单击 Button Group 并选择View Callbacks->SelectionChangeFcn)。eventdata参数包含当前和先前选择的单选按钮的句柄。eventdata参数是具有以下字段的结构:
因此,取决于eventdata.NewValue的值;例如
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
...
按钮回调的解决方案
您的按钮的回调可能有一些类似的东西
function button1_Callback(hObject,eventdata,handles)
h_selectedRadioButton = get(handles.uipanel1,'SelectedObject');
selectedRadioTag = get(h_selectedRadioButton,'tag')
switch selectedRadioTag
case 'radiobutton1'
case 'radiobutton2'
...
end
GUI的速成课程开始......现在:
如果您使用的是guide
,那么当您保存图 mygui.fig 时,M 文件应该会自动生成为 mygui.m。打开 mygui.m 并在单选按钮回调函数下输入您的代码。启动程序时要初始化的任何变量都应在打开函数下定义。确保在每个回调结束时使用命令 guidata(hObject,handles) 更新句柄结构。
例如,如果您想要两个互斥的单选按钮(当您选择一个时,另一个取消选择,或者当您取消选择一个时,另一个被选中),请在其回调下输入以下代码:
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);
和
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);
并在打开函数下初始化要选中的单选按钮一:
set(handles.radiobutton1,'Value',1)
set(handles.radiobutton2,'Value',0)