1

プッシュボタンについて学び始めたばかりで、行き詰まっています。2 つのポップアップ メニューがあります。ユーザーがプッシュ ボタンを選択したとき。各ポップアップ メニュー選択の合計がユーザーに返されます。ポップアップ メニューから値を取得しましたが、プッシュ ボタンが実行された後に値を返す方法がわかりません。どんな助けでも大歓迎です

 function pushbutton1_Callback(hObject, eventdata, handles)

 math=0;

 data1 =get(handles.popupmenu1, 'Value')  %processing data from first pop up menu
 if data1== 1
 math=1
 elseif data1 == 2
    math=4
 end
 data2=get(handles.popupmenu2, 'Value')  %processing data from second pop up menu
 if data2==1
    math=math + 5;
 end
 % I tabulated math which is some number.  I want to return it back to the user 
 in  a text outside of the button.
4

2 に答える 2

2

値を返す別の方法があります。値を渡し、guidata-structure 内に格納します。詳細については、ドキュメントで guidata を検索してください。ドキュメントの一例:

function My_Callback()
% ...
% Get the structure using guidata in the local function
myhandles = guidata(gcbo);
% Modify the value of your counter
myhandles.numberOfErrors = myhandles.numberOfErrors + 1;
% Save the change you made to the structure
guidata(gcbo,myhandles) 

それを行う方法の簡単な説明:

1. myhandles=guidata(handle_of_the_figure) でデータを取得

2. myhandles.Test = 123 のように、データを追加/変更します。

3.変更を保存することを忘れないでください。そうしないと、「消えてしまう」-> guidata(handle_of_the_figure,myhandles) を使用します

4.テストするには、後で別の関数内で guidata をロードし、変更を探します。

編集

あなたの質問を読み直したときに、おそらくコールバック内で計算された値を別の場所に表示したいだけだと思いました。たとえば、値をテキスト編集 uicontrol に表示したい場合は、次を使用できます。

set(HandleOfTheTextEdit, 'String', num2str(mat))
于 2013-11-08T07:40:31.380 に答える
1

より精巧で強力な方法は、独自のハンドル クラスを作成することです。

そうすることで、カスタム データにコールバックを追加できます。ここで例を示しました。

于 2013-11-08T09:49:43.573 に答える