2017-02-07 10 views
1

私は、ボタンを押すと画像を表示するGUIを構築していますが、画像がたくさんあり、時には多数の画像にジャンプしたいので、私がやっていることは、get edit texbox、私は行きたい画像の番号を入れ、希望の画像になるまでボタンを押してもう一方のボタンを押します。私はこの方法(他のボタンをx回押して目的の画像に到達させる)をしたいのですが、同時に画像が他のものに渡っているときに並行して起こっているものがたくさんあるからです。ボタンをもう1つ押してください。 Matlab GUI

ので、ボタンの私のコードは次のとおりです。

function pushbutton14_Callback(hObject, eventdata, handles) 
% hObject handle to pushbutton14 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
i = str2double(get(handles.edit4, 'String')); 
while handles.counterN < i 
    pushbutton1_Callback(hObject, eventdata, handles); 
    guidata(hObject, handles); 
end 

だから私はボタン14を押すたびに、私はそれがボタン1を押して取得したい、毎回ボタン1 1N追加されるカウンタ(まで押された)はedit4の値になります。私は、ボタン1機能の終わりに、guidata(hObject, handles);を持って

1として

しかし、関数guidataが更新されていない何らかの理由で

は、カウンタは常にではありませんなぜ私は理解していない...とどまるので、更新しましたが、私はまた、 guidata(hObject, handles);をwhileループに入れずに試しました

+0

私はちょうど私の答えを更新しました。ループの始めにカウンタが必要であることを忘れてしまった。 –

答えて

2

が増分しますが、増分値は決して得られません。実際には、そのコールバックが返ってくると直ちに1を上書きします。 pushbutton14_Callbackの範囲内でhandles.counterNが1であることを覚えておいてください。pushbutton1_Callbackは、カウンタをインクリメントしているかもしれませんが、呼び出し元の関数の範囲内ではありません。 guidataで設定すると、handles = guidata(hObject);に電話するまで、pushbutton14_Callbackの値は更新されません。 pushbutton1_Callbackは既にguidata(hObject, handles);と呼ばれていますので、データを設定する代わりに取得してください。

guidata(hObject, handles);handles = guidata(hObject);に置き換えてください。

関連する問題