3

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

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

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

2 回答 2

6

按钮组回调的一种解决方案: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

我还建议您参阅 MATLAB 文档以获取有关处理图形和构建图形用户界面的更多信息。

于 2010-04-12T20:50:03.417 回答
2

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)
于 2010-04-12T20:49:51.050 回答