如何将函数传递给使用MATLAB中的指南创建的按钮组中的单选按钮?

时间:2010-04-12 19:42:30

标签: matlab button radio-button matlab-guide

我创建了一个带有四个单选按钮的按钮组和一个使用指南的按钮。

有四个功能,每个单独写一个单选按钮。

  1. 如何从相应的单选按钮调用这些功能。
  2. 按下按钮时,应执行与活动单选按钮关联的功能。

2 个答案:

答案 0 :(得分:6)

Button Group Callback的解决方案:SelectionChangeFCN

使用选择更改回调属性(右键单击按钮组并选择 uipanel 查看回调 - > SelectionChangeFcn )。 eventdata 参数包含当前和先前选择的单选按钮的句柄。 eventdata 参数是一个包含以下字段的结构:

  • 事件名称
  • 的OldValue
  • 的NewValue

因此,取决于 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

我还会向您推荐MATLAB文档,以获取有关Handle Graphics和构建graphical user interfaces的更多信息。

答案 1 :(得分:2)

关于GUI开始的崩溃课程......现在:

如果您正在使用guide,那么当您保存图形mygui.fig时,M文件应自动生成为mygui.m。打开mygui.m并在单选按钮回调函数下输入您的代码。您应该在启动程序时初始化的任何变量都应在opens函数下定义。确保使用命令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);

并初始化单选按钮1,在开启功能下选择:

set(handles.radiobutton1,'Value',1)
set(handles.radiobutton2,'Value',0)
相关问题