приведенный выше код работает на майском проекте ..

программист Matlab, но мне нужно создать интерфейс с использованием Matlab! Этот вопрос должен быть очень простым для программистов Matlab :)

У меня есть интерфейс, который содержит панель группы переключателей «OperationPanel», 4 радиокнопки внутри нее, названия которых «addBtn, subBtn, divBtn, mulBtn», и у меня есть командная кнопка, которую я хочу, когда я нажимаю на кнопку, чтобы получить значение выбранная кнопка радио

Какую запятую я должен использовать? Я погуглил это и обнаружил, что если я

get(handles.NewValue,'Tag');

Я устал, но это не работает !! Можно мне помочь?

Ответы на вопрос(4)

get(handles.NewValue,'Tag')

То, что вы должны использовать, это

get(eventdata.NewValue, 'Tag')

Суть в том, когда вы смотрите на SelectionChangeFcn - то, что вы, по сути, ищете, это то, что вызвало новое событие и каково новое значение, связанное с этим событием. Вам не нужно использовать «Tag» - вы даже можете использовать «String» или другие свойства, которые могут быть уместны в вашем контексте.

Вы установилиhandles кhOjbect? Также не забудьте обновить дескриптор после обработки события переключателя. Вы смотрели на этоMatlab GUI Tutorial? Прокрутите вниз до части 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);
 palAlaa07 янв. 2011 г., 12:28
@ gray comtois, да, я посмотрел учебные пособия по Matlab GUI, но эта функция "fontSelect_buttongroup_SelectionChangeFcn ()" является действием группы кнопок, и я хочу выполнить действие с помощью командной кнопки.
Решение Вопроса

чтобы проиллюстрировать, как получить значение компонента группы переключателей:

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

Очевидно, вы могли бы добавить больше проверок на входные числа и так далее ...

 palAlaa07 янв. 2011 г., 13:30
Я сделал, и теперь это работает, но я делаю действие на переключателях, а не на кнопке, как показывает @gary comtois, я пытаюсь вызвать метод действия переключателей внутри функции обратного вызова кнопки, но это не работает, у тебя есть предложения?
 palAlaa07 янв. 2011 г., 12:37
отличный ответ, но я не знаком с программированием GUI в matlab, я просто перетаскиваю инструменты, добавляю панель radioButton Group и добавляю все rbuttons независимо, но я не знал, как сделать так, чтобы все они принадлежали одному и тому же группа.
 Amro07 янв. 2011 г., 13:41
это именно то, что я показал в примере выше. Как только кнопка нажата, она получает текущий выбор из группы радиокнопок и применяет эту операцию, используяswitch блок (get(handleRadioGroup,'SelectedObject') затем получить либоString или жеTag свойство)
 Amro07 янв. 2011 г., 13:16
@Alaa: Когда вы создаете радиокнопки внутри GUIDE, не забудьте поместить их в панель

приведенный выше код работает на майском проекте ..

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

Ваш ответ на вопрос