2011-01-07 76 views
5

私はmatlabプログラマではありませんが、私はmatlabを使用してインターフェイスを作成する必要があります! このqusetionは、MATLABプログラマー:)ラジオボタンの選択値はどのように取得できますか?

のために非常に簡単なはずです、私は名前が「addBtn、subBtn、divBtn、mulBtn」であり、私はその中に4つのラジオボタン、ラジオボタングループパネル「操作パネル」 が含まれているインタフェースを持っていますコマンドボタン、ボタンをクリックして選択したラジオボタンの値を取得したいとき

私は使用すべきコマンドを教えてください。私はそれをgoogleして、それを見つけたらそれを見つけた

get(handles.NewValue,'Tag'); 

私は疲れましたが動作しません!助けてもらえますか?

答えて

12

は、ここでラジオボタングループコンポーネントの値を取得する方法を説明するための簡単な例です:

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 
あなたは下のこの構文を使用している場合は、ERを取得します

screenshot

明らかに、入力番号の詳細な検証を追加することができますのように...

+0

素晴らしい答えですが、私はmatlabのGUIプログラミングに精通していません、私はちょうどツールにドラッグアンドドロップ、私はradioButtonグループパネルを追加し、すべてのrbuttonsインディッドを追加するが、私はそれらをすべてに属する方法を知らなかった同じグループ。 – palAlaa

+0

@Alaa:GUIDE内にラジオボタンを作成するときには、パネル内にラジオボタンを作成するときは、 – Amro

+0

のようにしてください。ラジオボタンはプッシュボタンではなく、@ gary comtoisが表示するので、プッシュボタンのコールバック機能の中でラジオボタンのアクションメソッドを呼び出そうとしますが、うまくいきません。何か提案がありますか? – palAlaa

2

handleshOjbectに設定しましたか?また、ラジオボタンイベントを処理した後にハンドルを更新することを忘れないでください。このMatlab GUI Tutorialを見ましたか? 3つのラジオボタンの次のコード例を参照してくださいパート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); 
+0

@grayのcomtoisを投影して、はい私はMatlabのGUIのチュートリアルを見て、これfucncion「fontSelect_buttongroup_SelectionChangeFcnは()」ButtonGroupをの行為であり、私がしたいですコマンドボタンでアクションを実行します。 – palAlaa

2

ROR:

get(handles.NewValue,'Tag') 

あなたが使用する必要がありますするポイントは、あなたがのSelectionChangeFcnを見ているとき

get(eventdata.NewValue, 'Tag') 

されている - あなたは、本質的に探しているものは、解雇た新しいイベントは何ですかされており、そのイベントに関連付けられた新しい値は何ですか。あなたは 'Tag'を使う必要はありません。あなたの文脈に合った 'String'や他のプロパティを使うことさえできます。

0

上記のコードは、上で動作します。..

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 
関連する問題