Matlab 如何获取单选按钮的选定值?

Matlab 如何获取单选按钮的选定值?,matlab,radio-button,Matlab,Radio Button,我不是matlab程序员,但我需要用matlab创建一个接口! 这个问题对于matlab程序员来说应该很容易:) 我有一个包含单选按钮组面板“OperationPanel”的界面 ,其中有4个单选按钮,名称为“addBtn、subBtn、divBtn、mulBtn”,我有命令按钮,当我点击按钮时,我想获得所选单选按钮的值 我应该使用什么命令?我搜索了一下,发现如果我 get(handles.NewValue,'Tag'); 我累了,但是不行!!我能得到一些帮助吗 是否已将句柄设置为hOjbec

我不是matlab程序员,但我需要用matlab创建一个接口! 这个问题对于matlab程序员来说应该很容易:)

我有一个包含单选按钮组面板“OperationPanel”的界面 ,其中有4个单选按钮,名称为“addBtn、subBtn、divBtn、mulBtn”,我有命令按钮,当我点击按钮时,我想获得所选单选按钮的值

我应该使用什么命令?我搜索了一下,发现如果我

get(handles.NewValue,'Tag');

我累了,但是不行!!我能得到一些帮助吗

是否已将
句柄设置为
hOjbect
?另外,不要忘记在处理单选按钮事件后更新句柄。你看过这个吗?向下滚动至第3部分第5步,查看以下三个单选按钮的示例代码:

function fontSelect_buttongroup_SelectionChangeFcn(hObject, eventdata)

%retrieve GUI data, i.e. the handles structure
handles = guidata(hObject); 

switch get(eventdata.NewValue,'Tag')   % Get Tag of selected object
    case 'fontsize08_radiobutton'
      %execute this code when fontsize08_radiobutton is selected
      set(handles.display_staticText,'FontSize',8);

    case 'fontsize12_radiobutton'
      %execute this code when fontsize12_radiobutton is selected
      set(handles.display_staticText,'FontSize',12);

    case 'fontsize16_radiobutton'
      %execute this code when fontsize16_radiobutton is selected  
      set(handles.display_staticText,'FontSize',16);
    otherwise
       % Code for when there is no match.

end
%updates the handles structure
guidata(hObject, handles);

下面是一个快速示例,演示如何获取单选按钮组组件的值:

function simpleGUI
    hFig = figure('Visible','off', 'Menu','none', 'Name','Calculator', 'Resize','off', 'Position',[100 100 350 200]);
    movegui(hFig,'center')          %# Move the GUI to the center of the screen

    hBtnGrp = uibuttongroup('Position',[0 0 0.3 1], 'Units','Normalized');
    uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15 150 70 30], 'String','Add', 'Tag','+')
    uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15 120 70 30], 'String','Subtract', 'Tag','-')
    uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15  90 70 30], 'String','Multiply', 'Tag','*')
    uicontrol('Style','Radio', 'Parent',hBtnGrp, 'HandleVisibility','off', 'Position',[15  60 70 30], 'String','Divide', 'Tag','/')

    uicontrol('Style','pushbutton', 'String','Compute', 'Position',[200 50 60 25], 'Callback',{@button_callback})

    hEdit1 = uicontrol('Style','edit', 'Position',[150 150 60 20], 'String','10');
    hEdit2 = uicontrol('Style','edit', 'Position',[250 150 60 20], 'String','20');
    hEdit3 = uicontrol('Style','edit', 'Position',[200  80 60 20], 'String','');

    set(hFig, 'Visible','on')        %# Make the GUI visible

    %# callback function
    function button_callback(src,ev)
        v1 = str2double(get(hEdit1, 'String'));
        v2 = str2double(get(hEdit2, 'String'));
        switch get(get(hBtnGrp,'SelectedObject'),'Tag')
            case '+',  res = v1 + v2;
            case '-',  res = v1 - v2;
            case '*',  res = v1 * v2;
            case '/',  res = v1 / v2;
            otherwise, res = '';
        end
        set(hEdit3, 'String',res)
    end
end


显然,您可以在输入数字上添加更多验证,等等…

如果使用下面的语法,您将得到一个错误:

get(handles.NewValue,'Tag')
你应该使用的是

get(eventdata.NewValue, 'Tag')

关键是当您查看SelectionChangeFcn时-您实际上要查找的是已触发的新事件以及与该事件关联的新值。您不必使用“Tag”-您甚至可以使用“String”或其他适合您上下文的属性。

上述代码适用于may project

function pushbutton_startProcess_Callback(hObject, eventdata, handles)

    set(handles.edit1,'String',get(handles.edit2,'String'));

            switch get(get(handles.uipanel3,'SelectedObject'),'Tag')
                case 'wavelet_method',  set(handles.edit1,'String','wavelet_method');
                case 'glcm_method',  set(handles.edit1,'String','glcm_method');
                case 'ewd_method',  set(handles.edit1,'String','ewd_method');
                case 'wavelet_gclm_method',       set(handles.edit1,'String','wavelet_glcm_method');
                otherwise, set(handles.edit1,'String','boş');
            end

@gray comtois,是的,我看过Matlab GUI教程,但是这个功能“fontSelect_buttongroup_SelectionChangeFcn()”是按钮组的动作,我想在命令按钮上进行动作。回答很好,但我不熟悉Matlab中的GUI编程,我只是拖放到工具上,我添加了radioButton组面板并添加了indide中的所有rbuttons,但我不知道如何使它们都属于同一组。@Alaa:当您在指南中创建radioButton时,请确保将它们放入我创建的面板中,它现在可以工作了,但我在单选按钮上执行操作,而不是在按钮上执行@gary comtois向我显示的操作,我试图在按钮的回调函数中调用单选按钮的action方法,但它不起作用,你有什么建议吗?这正是我在上面的示例中所展示的。按下按钮后,它从radiobuttons组检索当前选择,并使用
开关
块应用该操作(
get(handleRadioGroup,'SelectedObject')
然后检索
字符串
标记
属性)