0

プログラムが計算を行っている間、GUI ボタン​​の背景色を別の色に設定しようとしています。ボタンをクリックしたときに色が変わるように設定すると、色が変わります。ただし、実際の計算後に別のコード行を追加して色をデフォルトに戻すと、最初は色が変更されません。

function FitData_button_Callback(hObject, ~, handles) %#ok<DEFNU>

set(handles.FitData_button,'BackgroundColor',[0 204 0]./255,'String','Fitting Data');

% do some computation that takes time here...

% this line causes the first instance of 'set' not to work
set(handles.FitData_button,'BackgroundColor',[237 237 237]./255,'String','Fit Data'); 

'set' を呼び出す 2 回目にプロパティを変更すると、デフォルトから 2 回目に指定されたものに変更されます (長い計算が終了した後に変更されます)。ただし、プロパティの最初のセットは割り当てられません。そのため、BackgroundColor および String プロパティを 1 回だけ設定することが許可されているように見えますが、これは意味がありません。

何を与える?ありがとう

4

1 に答える 1

3

簡単な答えは、計算の途中に「ドローイング」を配置することです。長い答えは、彼のブログで Yair Altman によって最もよく説明されています (ちなみにこれは素晴らしいです) - http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/

于 2013-06-19T20:17:41.637 に答える